gpt4 book ai didi

python - conftest.py 文件可以放在 pytest 的测试包旁边的另一个包中吗?

转载 作者:行者123 更新时间:2023-12-01 23:58:28 25 4
gpt4 key购买 nike

问题:
是否可以将 conftest.py 文件放入测试包旁边的另一个包中,如下所示?

描述
项目结构如下:
------------------------------------

GUI_pytest
- C_lib
--__init__.py
-- conftest.py
- G_test<br/>
--__init__.py
-- test_2.py

Source_Root: GUI_pytest
conftest.py: GUI_pytest/C_lib(包)
test_2.py(测试文件): GUI_pytest/G_test(包)

GUI_pytest/C_lib/conftest.py:
有一个 fixture 函数作为 def a()

测试用例:GUI_pytest/G_test/test_2.py 使用 fixture 作为 def test_2(a)

我想将 conftest.pytest_case().py 拆分成 C_lib 包 和 < strong>G_test 包

但是 pytest 似乎无法获取 conftest.py 文件找不到 def test_2(a)

使用的 fixture 函数 a 时出错

提前谢谢你
作为初学者,欢迎任何帮助解决这个问题的人。

最佳答案

答案是否定的,没有变通办法这是不可能的,我不建议这样做。

如果你使用一个框架,你应该使用框架提供的约定——这使得使用起来更容易,并且你不会因为一些框架不期望的用法而遇到问题。这里的框架是指 pytest,它不仅仅是一个可执行文件,因为它提供(并期望)特定的基础设施(当然可以更好地记录......)。您可以在 SO 问题的答案中找到更多信息,例如 In pytest, what is the use of conftest.py files? .

pytest 使用 conftest.py 文件以分层方式为测试提供 fixture 、插件和 Hook 。
所以,比如说,你有这样的结构:

tests
test_a
test_a1.py
test_a2.py
test_b
test_b1.py
test_b2.py

test_a 中的测试使用 fixture local_fixturetest_b 中的测试使用另一个 fixture local_fixture,并且所有测试都使用通用 fixture common_fixture。最简单的方法如下:

tests
conftest.py -> contains common_fixture
test_a
conftest.py -> contains local_fixture for test_a...
test_a1.py
test_a2.py
test_b
conftest.py -> contains local_fixture for test_b...
test_b1.py
test_b2.py

其他模块提供的插件中也可以有 conftest.py 文件,您可以直接使用所有这些固定装置,而无需导入它们,或执行一些 PYTHONPATH 魔法。您只需遵循通用约定而不是使用您自己的约定即可使用该功能。

关于python - conftest.py 文件可以放在 pytest 的测试包旁边的另一个包中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62262258/

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