The new features in unittest for Python 2.7 backported to Python 2.4+.
unittest2 is a backport of the new features added to the unittest testing framework in Python 2.7. It is tested to run on Python 2.4 - 2.6.
To use unittest2 instead of unittest simply replace import unittest with import unittest2.
Classes in unittest2 derive from the equivalent classes in unittest, so it should be possible to use the unittest2 test running infrastructure without having to switch all your tests to using unittest2 immediately. Similarly you can use the new assert methods on unittest2.TestCase with the standard unittest test running infrastructure. Not all of the new features in unittest2 will work with the standard unittest test loaders and runners however.
New features include:
- addCleanups - better resource management
- many new assert methods including better defaults for comparing lists, sets, dicts unicode strings etc and the ability to specify new default methods for comparing specific types
- assertRaises as context manager, with access to the exception afterwards
- test discovery and new command line options
- test skipping and expected failures
- load_tests protocol for loading tests from modules or packages
- startTestRun and stopTestRun methods on TestResult
- various other API improvements and fixes
Command line usage
In Python 2.7 you invoke the unittest command line features (including test discover) with python -m unittest <args>. As unittest is a package, and the ability to invoke packages with python -m ... is new in Python 2.7, we can’t do this for unittest2.
Instead unittest2 comes with a script unit2. Command line usage:
unit2 discover unit2 -v test_module
There is also a copy of this script called unit2.py, useful for Windows which uses file-extensions rather than shebang lines to determine what program to execute files with. Both of these scripts are installed by distutils.
Until I write proper documentation, the best information on all the new features is the development version of the Python documentation for Python 2.7:
Look for notes about features added or changed in Python 2.7.
unittest2 is maintained in an SVN repository courtesy of google code: