繁体   English   中英

pytest-如何将一个夹具用于多个conftest文件问题

[英]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将始终为每个测试使用正确的测试。

根目录

  • conftest.py
  • test_group_1
    • conftest.py
  • test_group_2
    • conftest.py

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM