我怎样才能通过放置在 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