Following system colour scheme - Python 增强提案 Selected dark colour scheme - Python 增强提案 Selected light colour scheme - Python 增强提案

Python 增强提案

PEP 417 – 在标准库中包含 mock

作者:
Michael Foord <michael at python.org>
状态:
最终版
类型:
标准跟踪
创建日期:
2012年3月12日
Python 版本:
3.3
发布历史:
2012年3月12日
决议:
Python-Dev 消息

目录

摘要

本PEP提议将mock [1] 测试库作为 unittest.mock 添加到Python标准库中。

基本原理

为测试创建mock对象是Python中常见的需求。许多开发人员在他们的测试套件中根据需要创建临时mock。这正是我们目前在Python测试套件中所做的,而一个标准化的mock对象库将对此有所帮助。

有许多可用于Python的mock对象库[2]。其中,mock无疑是最受欢迎的,在PyPI上的下载量与所有其他mocking库的总和一样多。

mock的一个优点是它是一个mocking库而不是一个框架。它提供了一个可配置且灵活的mock对象,而不会对你如何编写测试提出意见。mock API现已久经实战考验且稳定。

在测试范围内,mock还能安全地对对象进行猴子补丁(monkeypatching)和解除猴子补丁(unmonkeypatching)。这很难安全地做到,许多开发人员/项目都模仿了此功能(通常不正确)。一种标准化的方法来处理此问题,处理存在描述符协议(等)时补丁的复杂性是有用的。人们正在要求unittest添加“patch”[3]功能。通过mock.patch来完成此操作优于在unittest中重新实现此功能的一部分。

背景

在2012年Python语言峰会上讨论并同意将mock添加到Python标准库中。

未解决的问题

截至撰写本文时的0.8版本,mock与Python 2.4-3.2兼容。纳入Python标准库将允许删除一些Python 2特定的“兼容性补丁”。

mock 0.8引入了一个新功能,“auto-speccing”,取代了旧的mock功能“mocksignature”。“mocksignature”功能可以在纳入之前从mock中完全删除。

参考资料


来源:https://github.com/python/peps/blob/main/peps/pep-0417.rst

最后修改:2025-02-01 08:59:27 GMT