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

pytest运行测试类报AttributeError:无get_file_list属性如何解决

报错原因

Python类的普通实例方法第一个参数固定为类自身的实例对象(通常命名为self),pytest执行测试类的测试方法时也遵循该语法规则:

  • 你将fixture名d_service放在了测试方法的第一个参数位,实际该参数收到的是TestDService的实例对象,而非fixture返回的DService实例
  • 调用d_service.get_file_list等价于调用TestDService实例的get_file_list方法,该方法不存在就抛出了对应的AttributeError
修复方案

给测试方法第一个位置补充self参数,将d_service放到第二个参数位即可,pytest会自动匹配fixture名称完成注入:

class TestDService:
    # 补全self参数,fixture参数放在后续位置
    def test_get_file_list(self, d_service):
        print(type(d_service))  
        files = d_service.get_file_list('')
        print(files)

你之前定义的fixture逻辑完全正常,不管用return还是yield返回都不需要修改。

可选优化

如果你不想在测试方法中加self参数,可以选择两种方案:

  • 将测试方法直接写在测试类外部,不需要类包裹
  • 给测试方法加@staticmethod装饰器,标记为静态方法,不需要self参数

内容的提问来源于stack exchange,提问作者ca9163d9

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:06:06