使用pytest测试类方法报错fixture 'self' not found如何解决?
问题原因
- 顶层测试函数无需
self参数:pytest的独立测试函数不属于任何自定义业务类,不需要加self入参。pytest会默认把测试函数的所有入参识别为需要自动注入的fixture,因此会抛出找不到selffixture的错误。 - 导入逻辑存在遗漏:测试代码仅导入了
calgo模块,直接调用MyClass()会触发类未定义的报错,该报错会在解决fixture问题后暴露。
解决方案
方法1:使用独立测试函数(当前写法修正)
直接删除test_func的self参数,同时实例化类时补全模块前缀,修正后的test_calgo.py代码如下:
import calgo def test_func(): mc = calgo.MyClass() assert mc.func(3) == 4
方法2:使用测试类组织用例
如果你习惯用类来分组管理测试用例,可以将测试函数放在以Test开头的pytest测试类中,此时成员方法需要带self参数:
from calgo import MyClass class TestMyClass: def test_func(self): mc = MyClass() assert mc.func(3) == 4
修正后重新执行pytest命令即可正常运行测试。
内容的提问来源于stack exchange,提问作者Jimmy
相关产品推荐
相关产品推荐

