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

Python unittest测试Car类时test_details等两测试用例报错求助

单元测试失败问题定位与修复

test_details 用例失败根因

你的get_details方法仅通过print()在控制台输出详情字符串,没有将拼接完成的详情字符串作为返回值传出。

  • 测试用例的校验逻辑是将self.car1.get_details()的返回值和预期的详情字符串做等值比对
  • 当前方法执行后无显式返回值,调用后实际得到的结果是None,和预期的字符串完全不匹配,直接触发断言失败

test_price_reduction 用例失败根因

你的reduce_price方法的价格修改逻辑存在本质错误:

  • 现有代码写法为self._price = self._cost - reduction,把降价的计算基数错换成了车辆采购成本,而非车辆当前的挂牌售价
  • 你单独运行car.py时输出符合预期,是因为手动测试实例的参数刚好凑出了打印结果,和unittest中传入的Car实例参数并不匹配:unittest中car1的成本为4999.99,按现有错误逻辑扣减1000.5后得到的新售价为3999.49,最终计算的利润为负数,完全达不到测试预期的3999.5的利润值

对应修复代码

  1. 修正get_details方法,将拼接好的详情字符串通过return返回,修改后实现:
def get_details(self):
    """ Returns the formatted car detail string """
    return f"{self._year} {self._make} {self._model} for sale for ${self._price}"
  1. 修正reduce_price方法的赋值逻辑,基于当前挂牌售价扣减降价额度,修改后实现:
def reduce_price(self, reduction):
    """ Updates the listed price by subtracting the passed reduction amount """
    self._price = self._price - reduction

优化建议:car.py文件顶层直接编写的手动测试逻辑,建议移入if __name__ == '__main__'判断块内,避免被unittest导入模块时自动执行产生冗余控制台输出,干扰测试结果判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 13:45:05