10

我们flake8用来测试我们的代码,并且我们正在使用pytestfixtures。以下代码:

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

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

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

  • 为什么它忽略 noqa 标志?
  • 有没有更好的方法来避免标记此错误?
4

2 回答 2

8

F401 和 F811 错误可以通过将所有夹具移动到conftest.py文件中来避免。Pytest 会自动加载这个文件,并使里面的所有固定装置在所有测试中都可用,即使没有明确的导入语句。

有关该文件的更多讨论可以在这里找到:在 py.test 中,conftest.py 文件有什么用?

于 2018-03-22T10:27:05.743 回答
3

共享固定装置有两种“最佳实践”:

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

通过导入副作用将固定装置带入范围会触发您看到的问题,不推荐

于 2020-02-07T10:22:39.567 回答