我想知道如何将当前运行的测试模块传递给灯具,或者灯具如何知道? (我需要为包内的每个测试模块加载特定的配置文件)。
我可以在每个测试模块中创建夹具,但是我想要一个更通用的解决方案。 预先感谢。
答案 0 :(得分:1)
通常,您可以像这样将模块名称添加到灯具中:
@pytest.fixture
def fixture_global(request):
module_name = request.module.__name__
print(module_name)
# some logic depends on module name
它甚至可能是全局争用的夹具,但是这种方式不适用于会话作用域夹具,因为并不是所有使用它的模块都被调用。
如果您想拥有一个基本的共享夹具代码,以及一些针对特定模块的特定代码,我建议一种更好的方法。
在全局conftest.py中,将具有通用代码的“基本”灯具放入。如果要将其用于特定的测试模块,只需将全局夹具作为参数注入到本地夹具即可。像这样:
conftest.py
@pytest.fixture
def global_fixture():
# universal code for vary modules
return universal_obj
test_module.py
@pytest.fixture
def local_fixture(global_fixture):
# specific code that uses global fixture result