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

单元测试中抛出异常的Mock方法调用计数为0问题咨询

问题分析与解决方案

你的测试失败完全是因为引用了错误的Mock对象来统计调用次数,和方法抛出异常无关——抛出异常不会中断调用计数的统计,只要方法被调用,call_count就会正常递增。

错误原因

在测试代码中,你通过mocked_blob.return_value得到了Blob实例的Mock对象gcs_blob,并给它的upload_from_string方法设置了异常副作用。但最后你却去统计mocked_blob.upload_from_string.call_count——mocked_blob是Blob类的Mock,它的upload_from_string从未被调用过,真正被调用的是实例Mockgcs_blob上的upload_from_string方法。

修正后的测试代码

把断言行改成引用实例Mock的call_count即可:

self.assertEqual(1, gcs_blob.upload_from_string.call_count)

关于调用计数的说明

unittest.mock.Mock的call_count属性会如实记录该Mock对象被调用的次数,无论调用是否抛出异常(哪怕异常被捕获),只要调用行为发生,计数就会+1。Mock对象的调用跟踪会完整记录所有调用行为,包括引发异常的调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 00:15:14