PEP 417 – 将 mock 包含在标准库中
- 作者:
- Michael Foord <michael at python.org>
- 状态:
- 最终
- 类型:
- 标准跟踪
- 创建:
- 2012-03-12
- Python 版本:
- 3.3
- 历史记录:
- 2012-03-12
- 决议:
- Python-Dev 消息
摘要
本 PEP 提案将 mock [1] 测试库添加到 Python 标准库中,作为 unittest.mock
。
理由
在 Python 中,创建用于测试的模拟对象是一种常见的需求。许多开发人员在他们的测试套件中按需创建临时模拟对象。这目前是我们 Python 测试套件的做法,而一个标准化的模拟对象库将非常有用。
Python 有许多可用的模拟对象库 [2]。其中,mock 是压倒性地最受欢迎的,其在 PyPI 上的下载次数是其他模拟库的总和。
mock 的一个优势在于它是一个模拟库,而不是框架。它提供了一个可配置且灵活的模拟对象,而不对如何编写测试有任何偏见。mock API 现在经过了充分的测试并稳定下来。
mock 还可以在测试范围内安全地处理对象的操作和取消操作。这很难安全地执行,许多开发人员/项目会模仿此功能(通常是错误的)。一种标准化的方法可以安全地执行此操作,处理在描述符协议(等)存在情况下进行修补的复杂性,这是非常有用的。人们正在要求一个“修补” [3] 功能添加到 unittest 中。通过 mock.patch 执行此操作比在 unittest 中重新实现此功能的一部分更可取。
背景
在 2012 年 Python 语言峰会上,讨论并同意将 mock 添加到 Python 标准库中。
开放问题
截至 0.8 版本(即本文撰写时的最新版本),mock 与 Python 2.4-3.2 兼容。迁移到 Python 标准库将允许删除一些 Python 2 特定的“兼容性修补程序”。
mock 0.8 引入了一个新功能,“自动指定”,使其不再需要一个名为“mocksignature”的旧 mock 功能。“mocksignature”功能可以在包含之前完全从 mock 中删除。
参考文献
版权
本文件已进入公共领域。
来源: https://github.com/python/peps/blob/main/peps/pep-0417.rst
最后修改: 2023-09-09 17:39:29 GMT