Hasty Briefsbeta

双语

Why your mock breaks later

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