跟随 Head First Python 第二版时出现 Pytest-pep8 问题
Pytest-pep8 problem while following Head First Python 2nd edition
我一直在关注 Head First Python 第 2 版,在第 4 章中演示了 pep8 合规性测试。尽管与书中的代码相同,但我的输出却不同。
测试代码很简单:
def search4vowels(phrase: str) -> set:
"""Return vowels found in supplied phrase."""
vowels = set('aeiou')
return vowels.intersection(set(phrase))
def search4letters(phrase: str, letters: str='aeiou') -> set:
"""Return a set of 'letters' found in 'phrase'."""
return set(letters).intersection(set(phrase))
我尝试按照书中所示进行测试,并得到以下输出:
λ py.test.exe --pep8 vsearch.py
c:\users\gx\appdata\local\programs\python\python37-32\lib\site-packages\pep8.py:110: FutureWarning: Possible nested set at position 1
EXTRANEOUS_WHITESPACE_REGEX = re.compile(r'[[({] | []}),;:]')
============================= test session starts =============================
platform win32 -- Python 3.7.4, pytest-5.1.1, py-1.8.0, pluggy-0.12.0
rootdir: C:\Users\gx\Desktop\H.F. Python\mymodules
plugins: pep8-1.0.6
collected 1 item
vsearch.py . [100%]
============================== warnings summary ===============================
c:\users\gx\appdata\local\programs\python\python37-32\lib\site-packages\_pytest\mark\structures.py:324
c:\users\gx\appdata\local\programs\python\python37-32\lib\site-packages\_pytest\mark\structures.py:324:
PytestUnknownMarkWarning: Unknown pytest.mark.pep8 - is this a typo?
You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/latest/mark.html
PytestUnknownMarkWarning,
-- Docs: https://docs.pytest.org/en/latest/warnings.html
======================== 1 passed, 1 warnings in 0.04s ========================
(我稍微修改了空格以使其更具可读性)
书中没有这样的事情发生。
在这样做之前,我已经按照书中所示新安装了 pytest 和 pytest-pep8。
这是什么原因造成的?
这似乎是一个已知问题:#23。解决方法是在 pytest.ini
:
中注册 pep8
标记
[pytest]
markers =
pep8: workaround for https://bitbucket.org/pytest-dev/pytest-pep8/issues/23/
或在 conftest.py
:
中以编程方式注册它
def pytest_configure(config):
config.addinivalue_line(
'markers', 'pep8: workaround for https://bitbucket.org/pytest-dev/pytest-pep8/issues/23/'
)
我一直在关注 Head First Python 第 2 版,在第 4 章中演示了 pep8 合规性测试。尽管与书中的代码相同,但我的输出却不同。
测试代码很简单:
def search4vowels(phrase: str) -> set:
"""Return vowels found in supplied phrase."""
vowels = set('aeiou')
return vowels.intersection(set(phrase))
def search4letters(phrase: str, letters: str='aeiou') -> set:
"""Return a set of 'letters' found in 'phrase'."""
return set(letters).intersection(set(phrase))
我尝试按照书中所示进行测试,并得到以下输出:
λ py.test.exe --pep8 vsearch.py
c:\users\gx\appdata\local\programs\python\python37-32\lib\site-packages\pep8.py:110: FutureWarning: Possible nested set at position 1
EXTRANEOUS_WHITESPACE_REGEX = re.compile(r'[[({] | []}),;:]')
============================= test session starts =============================
platform win32 -- Python 3.7.4, pytest-5.1.1, py-1.8.0, pluggy-0.12.0
rootdir: C:\Users\gx\Desktop\H.F. Python\mymodules
plugins: pep8-1.0.6
collected 1 item
vsearch.py . [100%]
============================== warnings summary ===============================
c:\users\gx\appdata\local\programs\python\python37-32\lib\site-packages\_pytest\mark\structures.py:324
c:\users\gx\appdata\local\programs\python\python37-32\lib\site-packages\_pytest\mark\structures.py:324:
PytestUnknownMarkWarning: Unknown pytest.mark.pep8 - is this a typo?
You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/latest/mark.html
PytestUnknownMarkWarning,
-- Docs: https://docs.pytest.org/en/latest/warnings.html
======================== 1 passed, 1 warnings in 0.04s ========================
(我稍微修改了空格以使其更具可读性)
书中没有这样的事情发生。 在这样做之前,我已经按照书中所示新安装了 pytest 和 pytest-pep8。
这是什么原因造成的?
这似乎是一个已知问题:#23。解决方法是在 pytest.ini
:
pep8
标记
[pytest]
markers =
pep8: workaround for https://bitbucket.org/pytest-dev/pytest-pep8/issues/23/
或在 conftest.py
:
def pytest_configure(config):
config.addinivalue_line(
'markers', 'pep8: workaround for https://bitbucket.org/pytest-dev/pytest-pep8/issues/23/'
)