python
type_error
ai_generated
true
TypeError: 'Exception' object is not callable
ID: python/unittest-mock-side-effect-raises
80%Fix Rate
90%Confidence
0Evidence
2025-05-20First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| 3.9 | active | — | — | — |
Root Cause
在 mock 的 side_effect 中传入异常实例而不是异常类,导致调用时抛出 TypeError。
generic中文
在 mock 的 side_effect 中传入异常实例而不是异常类,导致调用时抛出 TypeError。
Workarounds
-
95% success 使用异常类
mock.side_effect = ValueError mock() # 抛出 ValueError
-
80% success 使用 lambda 抛出异常
mock.side_effect = lambda: (_ for _ in ()).throw(ValueError('msg'))
Dead Ends
Common approaches that don't work:
-
side_effect=ValueError('msg')
80% fail
尝试将 side_effect 设置为异常实例,但应该用类
-
side_effect=lambda: raise ValueError
50% fail
尝试在 side_effect 中调用 raise 语句,但语法错误