自动使用在单独模块中定义的 pytest fixtures

Autousing pytest fixtures defined in a separate module

我的项目中有以下文件树:

...
tests/
    __init__.py
    test_abc.py
...

我在 __init__.py 中定义了一个夹具:

@pytest.fixture(autouse=True)
def client():
    return TestClient()

我想在 test_abc.py 中使用这个夹具:

from . import client

def test_def():
    client.get(...) # Throws an error

如何在不传递对夹具的显式引用或使用 pytest 装饰器的情况下,在来自其他模块的测试方法中使用我的 autouse 夹具?

Autouse 适用于进行所有测试所需的一些设置的装置,并且可能会或可能不会 return 一些仍然有用的东西作为测试使用的装置。

想要访问夹具 return 编辑的内容的测试必须将夹具声明为参数,以便它们可以访问它。因此,如果您的测试想要访问夹具,他们必须将其声明为参数,这就是 pytest 的工作方式。希望这有帮助。