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
解决方案看起来更干净。