[TIP] unittest2 0.5.0: setuptools compatible test collector and Python 2.3 distribution

Michael Foord michael at voidspace.org.uk
Sun Jul 11 14:19:30 PDT 2010

Hello all,

unittest2 0.5.0 has just been released. This version of unittest2 has 
"feature parity" with the version of unittest in Python 2.7:

* unittest2 on PyPI http://pypi.python.org/pypi/unittest2

If you want to ensure that your tests run identically under unittest2 
and unittest in Python 2.7 you should use unittest2 0.5.0. Later 
versions of unittest2 will include changes in unittest made in Python 
3.2 and onwards after the release of Python 2.7.

unittest2 is a backport of the recent enhancements in the Python 
unittest testing library in Python 2.7.

* New and Improved: unittest2 article 
* unittest2 issue tracker http://code.google.com/p/unittest-ext/issues/list
* Mercurial Development Repository: http://hg.python.org/unittest2

Improvements in unittest2 over standard unittest in Python 2.6 and 
earlier include:

* automatic test discovery from the command line
* failfast, catch and buffer command line options
* class and module level setup and teardowns
* ``addCleanup`` for better resource handling
* test skipping and expected failures
* improvements to ``assertRaises`` and ``assertAlmostEqual``
* *many* new assert methods, plus better failure messages
* ``load_tests`` protocol for customizing test loading
* various other API improvements and fixes

unittest2 is tested with Python 2.4 - 2.7. New in 0.5.0 is a 
distribution for Python 2.3 contributed by Mark Roddy.

Also new in 0.5.0 is a setuptools compatible test collector. If you put 
``test_suite = 'unittest2.collector'`` in setup.py you can then find and 
run your tests (using test discovery) with:

``python setup.py test``

This starts test discovery with the default parameters from the 
directory containing setup.py, so
it is perhaps most useful as an example (see unittest2/collector.py).

All Changes in 0.5.0

Addition of a setuptools compatible test collector (very basic). Specify
``test_suite = 'unittest2.collector'`` in your setup.py.

``TestSuite.debug()`` and ``TestCase.debug()`` now execute cleanup functions
and class and module level setups and teardowns.

No longer monkey-patch os.path.relpath for Python 2.4 / 2.5 so that projects
don't accidentally depend on our patching. Contributed by Konrad Delong.

Added a Python version specific unit2 entrypoint. This will, for example,
create a ``unit2-2.6`` script if unittest2 is installed with Python 2.6.
(Requires setuptools or distribute.)

Python 2.3 compatibility (in the python2.3 branch of the repository),
contributed by Mark Roddy.

setuptools console script entry points are created as '.py' scripts on 

Feature parity with the Python 2.7 final release.


READ CAREFULLY. By accepting and reading this email you agree, on behalf of your employer, to release me from all obligations and waivers arising from any and all NON-NEGOTIATED agreements, licenses, terms-of-service, shrinkwrap, clickwrap, browsewrap, confidentiality, non-disclosure, non-compete and acceptable use policies (”BOGUS AGREEMENTS”) that I have entered into with your employer, its partners, licensors, agents and assigns, in perpetuity, without prejudice to my ongoing rights and privileges. You further represent that you have the authority to release me from any BOGUS AGREEMENTS on behalf of your employer.

More information about the testing-in-python mailing list