pytest - 来自测试的sepearate夹具逻辑

时间:2015-12-20 10:02:24

标签: python testing pytest

我有几个我想要编写pytest测试的软件包。所有的软件包都应该使用相同的fixture逻辑,所以我想让常用的测试逻辑(fixture)位于一些公共路径中,每个软件包测试应该位于自己的路径中。

Repository 1:
=============
/path/to/PackageA/test_A.py
/path/to/PackageB/test_B.py

Repository 2:
=============
/different_path/to/Common/conftest.py

问题在于,当我在pytesttest_A.py上运行test_B.py时,pytest找不到conftest.py中定义的灯具。 尝试使用--confcutdir选项,但没有运气......

唯一适用于我的方案是从pytest运行/different_path/to/Common/,而设置pytest.ini testpath = /path/to/PackageA/(运行pytest /path/to/PackageA/的BTW不起作用)

1 个答案:

答案 0 :(得分:2)

该问题的答案是将setup.py转换为pytest插件。如果您已为该Common项目设置了setup,则只需将其添加到# the following makes a plugin available to pytest entry_points = { 'pytest11': [ 'common = Common.plugin', ] }, 来电:

Common/conftest.py

您必须将plugin.py重命名为conftest.py(或setup.py以外的其他内容),因为py.test会专门处理该文件名。

如果您没有Common addopts = -p Common.plugin,那么您可以通过将PackageA/pytest.ini添加到PackageB/pytest.ini来使py.test将其用作插件{{1}}。