[英]How do I access the command line input in pytest conftest from the pytest_addoptions and use it in fixture params?
[英]Pytest - How to use one fixture for several conftest files issue
我有几个pytest套件,每个套件都有几乎相同的conftest文件。 由于conftest文件包含某种重复的代码,并且随着时间的推移它们可能会变得越来越大,并且套件的数量也可能会增加,因此我决定将conftest灯具移至某个路径中的另一个模块,并使用pytest_plugins
变量将其“导入”到conftest文件。
有一个问题。 有一种夹具取决于conftest文件的局部变量。 如何将灯具移至另一个模块,并强制其使用conftest文件的本地变量?
new_conftest_module.py
var = 1
@pytest.fixture(scope="session", autouse=True)
def session_init():
do_something(var)
test_dir1 / conftest.py
pytest_plugins = ['new_conftest_module']
var = 2
test_dir2 / conftest.py
pytest_plugins = ['new_conftest_module']
var = 3
这是一个虚拟的示例,但是您可以看到问题是var
变量对于每个conftest文件都是特定的,但是使用它的灯具却是相同的。 我是否可以使用一种解决方法,以便将夹具放在一个通用模块中,同时为每个套件使用特定的var
值?
conftest.py可以引用其下其他conftest中的任何灯具,使您能够在不同套件文件夹中定义具有不同返回值的相同灯具。 只需将var作为您在每组测试中单独设置的测试中设置的夹具,根目录中的conftest将始终为每个测试使用正确的测试。
根目录
test_group_1 / conftest.py
@fixture
def group_var():
return 1
test_group_2 / conftest.py
@fixture
def group_var():
return 2
rootdir / conftest.py
@fixture
def do_something(group_var):
print(group_var)
每个测试现在将打印在conftest中为自己的测试组设置的var,即使以并行方式运行也是如此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.