Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python 增强提案

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