|Support:||Testing in Python Email List|
mock provides a core mock.Mock class that is intended to reduce the need to create a host of trivial stubs throughout your test suite. After performing an action, you can make assertions about which methods / attributes were used and arguments they were called with. You can also specify return values and set specific attributes in the normal way.
Most mocking libraries follow the ‘record -> replay’ pattern of mocking. Mock uses the ‘action -> assertion’ pattern, which is more readable and intuitive; particularly when working with the Python unittest module. For a discussion of the merits of the two approaches, see Mocking, Patching, Stubbing: all that Stuff.
The current version is 0.6.0, dated 23rd August 2009. Mock is still experimental; the API may change. If you find bugs or have suggestions for improvements / extensions then please email me.
You can checkout the latest development version from the Google Code Subversion repository with the following command:
svn checkout http://mock.googlecode.com/svn/trunk/ mock-read-only
Mock is registered with PyPi (Mock on PyPi). If you have pip, setuptools or Distribute you can install mock with:
easy_install mockpip mock
Articles and blog entries on testing with Mock:
Mock uses the discover module to collect and run its tests. discover.py is included in the subversion repository so from a fresh checkout you can execute the following to run all the tests:
On Python 2.4 you will see one failure - testwith.py will fail to import as it uses the with statement which is invalid syntax under Python 2.4.