python
type_error
ai_generated
true
值错误:side_effect 必须是可调用对象或可迭代对象,得到 <class 'int'>
ValueError: side_effect must be a callable or iterable, got <class 'int'>
ID: python/unittest-mock-side-effect-exception
80%修复率
90%置信度
0证据数
2024-10-01首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| 3.9 | active | — | — | — |
| 3.10 | active | — | — | — |
根因分析
在 Mock 中设置 side_effect 时提供了非法的类型,如整数或字符串。
English
在 Mock 中设置 side_effect 时提供了非法的类型,如整数或字符串。
解决方案
-
100% 成功率
`mock.side_effect = lambda x: x + 1` 或 `mock.side_effect = [1, 2, 3]` 用于序列返回值。
-
95% 成功率
`mock.side_effect = Exception('错误')` 模拟异常抛出。
无效尝试
常见但无效的做法:
-
70% 失败
可能无法模拟异常或序列行为。
-
50% 失败
列表会被迭代,如果元素不是可调用,仍会出错。