python
type_error
ai_generated
true
类型错误:'Exception' 对象不可调用
TypeError: 'Exception' object is not callable
ID: python/unittest-mock-side-effect-raises
80%修复率
90%置信度
0证据数
2025-05-20首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| 3.9 | active | — | — | — |
根因分析
在 mock 的 side_effect 中传入异常实例而不是异常类,导致调用时抛出 TypeError。
English
在 mock 的 side_effect 中传入异常实例而不是异常类,导致调用时抛出 TypeError。
解决方案
-
95% 成功率 使用异常类
mock.side_effect = ValueError mock() # 抛出 ValueError
-
80% 成功率 使用 lambda 抛出异常
mock.side_effect = lambda: (_ for _ in ()).throw(ValueError('msg'))
无效尝试
常见但无效的做法:
-
side_effect=ValueError('msg')
80% 失败
尝试将 side_effect 设置为异常实例,但应该用类
-
side_effect=lambda: raise ValueError
50% 失败
尝试在 side_effect 中调用 raise 语句,但语法错误