python type_error ai_generated true

类型错误:'Exception' 对象不可调用

TypeError: 'Exception' object is not callable

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

其他格式: JSON · Markdown 中文 · English
80%修复率
90%置信度
0证据数
2025-05-20首次发现

版本兼容性

版本状态引入弃用备注
3.9 active

根因分析

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

English

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

generic

解决方案

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

无效尝试

常见但无效的做法:

  1. side_effect=ValueError('msg') 80% 失败

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

  2. side_effect=lambda: raise ValueError 50% 失败

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