如何在不导入的情况下使用 py.test 个固定装置

How to use py.test fixtures without importing them

假设我有一个文件 fixtures.py,它定义了一个名为 foobar.

的简单 py.test 夹具

通常我必须导入该夹具才能使用它(包括所有子夹具),如下所示:

from fixtures import foobar

def test_bazinga(foobar):

请注意,我也不想使用星号导入。

如何导入这个夹具以便我可以写:

import fixtures

def test_bazinga(foobar):

这可能吗?看起来是这样,因为 py.test 本身就定义了这样的固定装置(例如 monkeypatch)。

固定装置及其可见性在 pytest 中有点奇怪。它们不需要导入,但如果您在 test_*.py 文件中定义它们,它们将仅在该文件中可用。

然而,您可以将它们放在一个(项目或子文件夹范围内)conftest.py,以便在多个文件中使用它们。

pytest-internal fixtures 只是在 core plugin 中定义,因此随处可用。事实上,conftest.py 基本上就是一个目录插件。

您还可以 运行 py.test --fixtures 查看灯具的来源。