PEP: 417 Title: Including mock in the Standard Library Version: $Revision$ Last-Modified: $Date$ Author: Michael Foord Status: Draft Type: Standards Track Content-Type: text/plain Created: 12-Mar-2012 Python-Version: 3.3 Post-History: 12-Mar-2012 Abstract This PEP proposes adding the mock [1]_ testing library to the Python standard library as ``unittest.mock``. Rationale Creating mock objects for testing is a common need in Python. Many developers create ad-hoc mocks, as needed, in their test suites. This is currently what we do in the Python test suite, where a standardised mock object library would be helpful. There are many mock object libraries available for Python [2]_. Of these, mock is overwhelmingly the most popular, with as many downloads on PyPI as the other mocking libraries combined. An advantage of mock is that it is a mocking library and not a framework. It provides a configurable and flexible mock object, without being opinionated about how you write your tests. The mock api is now well battle-tested and stable. mock also handles safely monkeypatching and unmonkeypatching objects during the scope of a test. This is hard to do safely and many developers / projects mimic this functionality (often incorrectly). A standardised way to do this, handling the complexity of patching in the presence of the descriptor protocol (etc) is useful. People are asking for a "patch" [3]_ feature to unittest. Doing this via mock.patch is preferable to re-implementing part of this functionality in unittest. Background Addition of mock to the Python standard library was discussed and agreed to at the Python Language Summit 2012. References [1] `mock library on PyPI`_ [2] http://pypi.python.org/pypi?%3Aaction=search&term=mock&submit=search [3] http://bugs.python.org/issue11664 Copyright This document has been placed in the public domain. Local Variables: mode: indented-text indent-tabs-mode: nil sentence-end-double-space: t fill-column: 70 coding: utf-8 End: