Python 从模块导入功能时,py.test同时处理pylint和flake 8
因此,我大致有以下代码:Python 从模块导入功能时,py.test同时处理pylint和flake 8,python,pytest,Python,Pytest,因此,我大致有以下代码: from .fixtures import some_fixture def test_whatever(some_fixture): print(some_fixture) 我从flake8收到两条警告: F401“。装置。一些装置已导入但未使用 及 F811第1行中未使用的“某些固定装置”的重新定义 我不打算将装置移动到任何地方,但用noqa和pylint注释“装饰”每个测试定义和每个导入似乎是一种非常悲伤和无色的生活(特别是当装置没有真正使用时,有时
from .fixtures import some_fixture
def test_whatever(some_fixture):
print(some_fixture)
我从flake8
收到两条警告:
F401“。装置。一些装置已导入但未使用
及
F811第1行中未使用的“某些固定装置”的重新定义
我不打算将装置移动到任何地方,但用noqa
和pylint
注释“装饰”每个测试定义和每个导入似乎是一种非常悲伤和无色的生活(特别是当装置没有真正使用时,有时它会使合法的警告(s.a.)静音)
我还能做什么?使用flake8和pylint的指令禁用检查:
from .fixtures import some_fixture # noqa: F401; pylint: disable=unused-variable
def test_whatever(some_fixture):
print(some_fixture)
没有办法解决这个问题。还有另一种方法:分别对代码及其测试运行linter,仅在检查测试时忽略这些警告
此外,您可以向pylint或flake8提交PR,如果导入的名称是设备,则允许忽略这些检查。更好的方法是将设备放置在
conftest.py
文件中,该文件是共享设备的建议位置
pytest将自动发现它们。您不必导入它们,这样就不会有F401,而且由于参数不会与导入冲突,因此不再有F811。Abid提供的
conftest.py
解决方案看起来更干净。