如何让Flake8处理F811错误?

时间:2017-05-02 20:10:24

标签: python flake8

我们正在使用flake8来测试我们的代码,而我们正在使用pytest来使用fixture。以下代码:

from staylists.tests.fixtures import fixture1  # noqa: F401

def test_case(fixture1):  # noqa: F811
    # Test goes here
    assert 1 == 1

在linting期间生成lib/python/test.py:3:1: F811 redefinition of unused 'fixture1' from line 1错误。

  • 为什么忽略noqa标志?
  • 是否有更好的方法可以避免标记此错误?

2 个答案:

答案 0 :(得分:3)

共有两种共享固定装置的“最佳做法”:

  1. 在两个测试模块上方的conftest中定义它们
    • pytest将自动在两个测试之间共享它们
  2. 定义一个暴露测试装置的pytest插件
    • pytest将使您的灯具可用于所有测试

通过导入副作用将灯具带入作用域会触发您所看到的问题,不建议

答案 1 :(得分:1)

通过将所有灯具移动到 conftest.py 文件中,可以避免F401和F811错误。 Pytest会自动加载此文件,并使所有测试中的所有fixture都可用,即使没有明确的import语句。

有关该文件的更多讨论,请访问:In py.test, what is the use of conftest.py files?