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

Python单元测试使用assertAlmostEqual报list不支持减运算错误如何解决

错误原因

assertAlmostEqual 仅支持对数值类型做近似相等校验,底层会对两个输入参数做减法求差值。你直接传入了两个列表作为入参,而列表类型本身不支持减法运算,因此触发了类型错误。

修复方案

你需要遍历两组结果中的对应数据,单独对其中的浮点值做近似校验,修改后的代码示例如下:

def test_method_04(self):
    self.set_up()
    actual = self.bookshop.method_4(self.orders)
    expected = [(1, 678.33),(2, 494.46),(3, 364.8),(4, 492.57)]
    # 先校验两个列表长度一致,避免索引错位
    self.assertEqual(len(actual), len(expected))
    # 逐组校验数据
    for act, exp in zip(actual, expected):
        # 校验序号完全相等
        self.assertEqual(act[0], exp[0])
        # 校验浮点值近似相等
        self.assertAlmostEqual(act[1], exp[1], places=2)
    
    print("METHOD4 \nACTUAL:")
    for line in actual:
        print(line)
    print("EXPECTED:")
    for line in expected:
        print(line)

不要直接用assertEqual校验整个列表,浮点数精度误差可能会导致偶现的校验失败,上述单独对浮点值做近似校验的方案兼容性更强,所有Python版本都可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:45:06