Pytest:在框架测试中使用 App conftest.py

Pytest: use App conftest.py in framework tests

我正在尝试 运行 使用 pytest 拆分测试用例。我有一个应用程序和一个框架,它们都定义了测试用例。当我开始 运行 测试时,我的应用程序还使用 "main" 函数 运行s 框架的测试用例(from _pytest.config import main main([<framework_dir>, args, ...]))。

问题是我想使用应用 conftest.py 而不是框架的 conftest.py。我试图通过使用 --confcutdir= 选项 (main([<framework_dir>, '--confcutdir={}'.format(os.path.dirname(__file__)), ...])) 来实现这一点,但它不起作用。当我列出固定装置(使用 --fixtures 选项)时,它们没有列出(在应用程序的 conftest.py 中定义的那些)。

那么有谁知道如何在应用程序和 framework/lib 之间共享 fixtures 吗?

我创建了一个 GitHub 存储库来模拟我的项目并重现错误:https://github.com/karantan/global-fixtures

我在 websauna IRC 聊天中得到了用户 "enkidulan" 的很多帮助。他指出我不应该通过 main 函数调用框架测试。

我的问题的根源是 strategy of pytests discovery of fixtures functions 似乎最接近测试文件 conftest.py 总是在覆盖竞争中获胜,即使 -p 指定了一些要加载的装置(不确定它是否是 pytests 中的错误)。

所以他建议我应该将 conftest.py 重命名为不同的名称,例如 fixtures.py(我这样做了)。然后我不仅发现应用程序测试 (pytest src/app/tests/),还发现框架测试 + 添加要使用的固定装置:pytest -p app.tests.fixtures src/app/tests/

注意:如果有人想检查代码的外观,repo 将更新为最新的工作版本。