Why your mock breaks later
6 months ago
- #mocking
- #testing
- #python
- 过度激进的模拟测试可能在初期有效,但会因意外的副作用导致后续失败。
- 应在使用对象处进行模拟,而非定义处,以避免影响无关代码。
- 示例:全局模拟`open()`会干扰`coverage.py`等库,引发意外错误。
- 最佳实践包括使用`autospec=True`、对模拟调用进行断言,以及优先选择依赖注入而非模拟。
- `coverage.py`中的防御性修复通过保存原始`open`函数来避免全局模拟引发的问题。