pytest运行调试找不到conftest中fixture问题
问题:py文件内执行单个用例或class报错
最近在搞新项目时,代码拉下来后,在执行单个用例或class调试时,发现无法正常运行,提示找不到引用的fixture,报错: fixture ‘res’ not found
def test_inbound_apply_sample_search(self, res, token, data):
E fixture 'res' not found
终端执行用例
之前没遇见过这个问题,花了些时间排查了一下。首先,这个fixture确定是存在的。我先试着直接在terminal终端执行了一下,是没问题的,能正常运行结束。证明如果按pytest加载文件的顺序执行,其实是能正常加载conftest的fixture的,但在子文件夹内执行单个用例就是找不到
检查目录结构
整个testcase的目录结构如下图:
我调试的用例在testcase的三级目录下,调用的fixture在testcase的二级目录下,即fixture在用例文件的上一层。上面有说,按pytest的conftest加载顺序来说,应该是可以正常读到引用的fixture的,但是现在的问题是不行。于是,我又试着把conftest.py移到与我调试用例的.py文件同层的目录下。
conftest移到同层级后,单独调试用例可以执行成功,说明就是因为引用的fixture所在的层级影响,用例引不到上一层级conftest的fixture
解决方案
在对应用例的.py文件内引入conftest,加上如下代码,用例可以单独调试成功:
from testcase.samplecenter.conftest import *
解决方案是看了社区中的解答想到的
参考链接:https://testerhome.com/topics/25884