python type_error ai_generated true

TypeError: 'Exception' object is not callable

ID: python/unittest-mock-side-effect-raises

Also available as: JSON · Markdown · 中文
80%Fix Rate
90%Confidence
0Evidence
2025-05-20First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
3.9 active

Root Cause

在 mock 的 side_effect 中传入异常实例而不是异常类,导致调用时抛出 TypeError。

generic

中文

在 mock 的 side_effect 中传入异常实例而不是异常类,导致调用时抛出 TypeError。

Workarounds

  1. 95% success 使用异常类
    mock.side_effect = ValueError
    mock()  # 抛出 ValueError
  2. 80% success 使用 lambda 抛出异常
    mock.side_effect = lambda: (_ for _ in ()).throw(ValueError('msg'))

Dead Ends

Common approaches that don't work:

  1. side_effect=ValueError('msg') 80% fail

    尝试将 side_effect 设置为异常实例,但应该用类

  2. side_effect=lambda: raise ValueError 50% fail

    尝试在 side_effect 中调用 raise 语句,但语法错误