我有几个我想要编写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
问题在于,当我在pytest
或test_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不起作用)
答案 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}}。