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

pytest运行报AttributeError: 'TestFiles' object has no attribute '_reports'求助

报错原因
  • 核心问题是实例方法的调用对象传错了。Files类中定义的get_file_data和_reports都是实例方法,方法里的self默认指向Files类的实例对象。
  • 测试代码中直接以类名调用Files.get_file_data(self),传入的self是TestFiles类的实例,该类没有定义_reports方法,get_file_data内部调用self._reports()时,就会在TestFiles实例上查找方法,找不到就抛出对应的属性错误。
  • 额外的导入逻辑错误:Files类定义在main.py中,直接写import Files无法正确导入目标类。
修复方案
  1. 修正导入语句,从main.py中引入Files类:
# test.py开头修改为
from main import Files
  1. 调用get_file_data前先创建Files类的实例,通过实例调用方法,不需要手动传入self参数:
# 修改后的TestFiles类代码
class TestFiles:
    def test_generate_output_files(self):
        # 实例化Files类
        files_obj = Files()
        # 直接调用实例的get_file_data方法,self会自动传入
        files_obj.get_file_data()

如果确实需要单独测试私有方法_reports,Python的私有方法本质是做了名称修饰,你可以通过实例._Files__reports()的方式访问,但通常不建议直接测试私有方法,通过公共方法get_file_data覆盖对应的业务逻辑测试即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:36:02