如何使用py.test fixtures而不导入它们

时间:2016-04-06 13:17:17

标签: python pytest

假设我有一个文件fixtures.py,它定义了一个名为py.test的简单foobar夹具。

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

from fixtures import foobar

def test_bazinga(foobar):

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

如何导入此灯具以便我可以写:

import fixtures

def test_bazinga(foobar):

这甚至可能吗?似乎是这样,因为py.test本身定义了这样的固定装置(例如monkeypatch)。

1 个答案:

答案 0 :(得分:14)

灯具及其可见度在pytest中有点奇怪。他们不需要导入,但如果您在test_*.py文件中定义它们,则只能在该文件中使用。

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

pytest-internal灯具只是在core plugin中定义,因此无处不在。事实上,conftest.py基本上只是一个目录插件。

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