You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:39:03