我怎样才能通过放置在 conftest 中的装置中的当前 (运行) 测试模块?
How can i pass current (running) test module in fixtures which placed in conftest?
我想知道如何将当前 运行 测试模块传递给 fixture 或者 fixture 如何知道它? (我需要为包内的每个测试模块加载特定的配置文件)。
我可以在每个测试模块中创建夹具,但我想要更通用的解决方案。
提前致谢。
一般情况下,你可以像这样获取模块名称到fixture中:
@pytest.fixture
def fixture_global(request):
module_name = request.module.__name__
print(module_name)
# some logic depends on module name
它甚至可能是 conftest 中的全局固定装置,但这种方式不适用于会话范围固定装置,因为它们不会被调用每个使用它的模块。
如果你想要一个基本的共享夹具代码和一些特定模块的特定代码,我会建议一个更好的方法。
在全局 conftest.py 中放入带有通用代码的 "base" 夹具。如果你想将它用于特定的测试模块,只需将全局夹具作为参数注入到局部夹具。类似的东西:
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
我想知道如何将当前 运行 测试模块传递给 fixture 或者 fixture 如何知道它? (我需要为包内的每个测试模块加载特定的配置文件)。
我可以在每个测试模块中创建夹具,但我想要更通用的解决方案。 提前致谢。
一般情况下,你可以像这样获取模块名称到fixture中:
@pytest.fixture
def fixture_global(request):
module_name = request.module.__name__
print(module_name)
# some logic depends on module name
它甚至可能是 conftest 中的全局固定装置,但这种方式不适用于会话范围固定装置,因为它们不会被调用每个使用它的模块。
如果你想要一个基本的共享夹具代码和一些特定模块的特定代码,我会建议一个更好的方法。
在全局 conftest.py 中放入带有通用代码的 "base" 夹具。如果你想将它用于特定的测试模块,只需将全局夹具作为参数注入到局部夹具。类似的东西:
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