pytest fixture处理requests返回的爬虫数据时出现AttributeError报错
错误原因
pytest 测试类的实例方法第一个位置参数默认会被注入测试类自身的实例,你代码中test_keys方法的第一个参数写为obj,实际这个参数接收的是TestGoogleSearch类的实例,并非你定义的名为obj的fixture返回值,调用obj.keys()时就是在尝试调用测试类实例不存在的keys方法,因此抛出属性错误。
修复方案
只需调整测试方法的参数顺序,将类实例参数(约定命名为self)放在第一位,后续参数对应你定义的fixture即可:
class TestGoogleSearch: # 第一个参数固定为类实例self,后续参数会自动匹配同名fixture def test_keys(self, obj, target): assert sorted(obj.keys()) == sorted(target.keys()) # 其余测试方法也需要遵循相同的参数规则
如果不需要用到测试类的实例属性,也可以给测试方法加@staticmethod装饰器,就无需加self参数:
class TestGoogleSearch: @staticmethod def test_keys(obj, target): assert sorted(obj.keys()) == sorted(target.keys())
内容的提问来源于stack exchange,提问作者HermSang
相关产品推荐
相关产品推荐

