gpt4 book ai didi

python - Pytest - 如何使用一个固定装置处理多个conftest文件问题

转载 作者:行者123 更新时间:2023-12-01 02:07:47 25 4
gpt4 key购买 nike

我有几个 pytest 套件,每个套件都有几乎相同的 conftest 文件。由于conftest文件包含某种重复的代码,并且随着时间的推移它们可能会变得更大,并且套件的数量也可能会增加,我决定将conftest装置移动到特定路径中的另一个模块并使用“导入”它pytest_plugins 变量添加到conftest 文件中。

有一个问题。有一个固定装置依赖于conftest 文件的局部变量。如何将 fixture 移动到另一个模块并强制它使用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 文件都是特定的,但使用它的装置是相同的。我可以使用一种解决方法,以便在公共(public)模块中使用固定装置,同时为每个套件使用特定的 var 值吗?

最佳答案

conftest.py 可以引用其下方其他 conftest 中的任何固定装置,使您能够在不同套件文件夹中定义具有不同返回值的相同固定装置。只需将 var 设为在单独的 conftest 中为每组测试设置的固定装置,根目录中的 conftest 将始终为每个测试使用正确的固定装置。

根目录

  • conftest.py
  • 测试组_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,即使并行运行也是如此。

关于python - Pytest - 如何使用一个固定装置处理多个conftest文件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48904453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com