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

运行含assertEqual的测试套件报错:HtmlTestResult无_count_relevant_tb_levels属性

问题解决:'HtmlTestResult' object has no attribute '_count_relevant_tb_levels'

问题原因

这个错误并非assertEqual本身导致,而是HtmlTestRunner版本与Python unittest版本不兼容:

  • Python 3.11及以上的unittest框架新增了_count_relevant_tb_levels属性,用于处理测试失败时的回溯信息层级
  • 旧版本的HtmlTestRunner未实现该属性,当测试用例因断言失败(比如你的assertEqual不通过)触发错误回溯时,HtmlTestResult对象找不到这个属性,就会抛出异常

解决方案

方案1:升级到兼容的测试报告库

原有的HtmlTestRunner包可能已停止维护,建议使用维护活跃的html-test-runner包:

  1. 卸载旧包(如果已安装):
pip uninstall HtmlTestRunner
  1. 安装新版:
pip install html-test-runner
  1. 修改代码中的导入和调用:
from html_test_runner import HTMLTestRunner

# 替换原来的testRunner参数
if __name__ == '__main__':
    unittest.main(testRunner=HTMLTestRunner(output='Test result: '))

方案2:手动修改HtmlTestRunner源码(临时应急)

如果暂时无法更换库,找到HtmlTestRunner的安装目录,修改HtmlTestResult类,添加以下方法:

def _count_relevant_tb_levels(self, tb):
    return self._is_relevant_tb_level(tb)

方案3:降级Python版本

将Python版本降到3.10及以下,此时unittest还没有引入_count_relevant_tb_levels属性,旧版HtmlTestRunner可以正常工作(不推荐长期使用)。

验证

修改后重新运行测试套件,即使assertEqual断言失败,也能正常生成测试报告,不会再抛出该属性错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 06:25:24