The unittest module primarily provides a class TestCase to facilitate the writing of tests for “units” of code inside a larger project. Larger software projects benefit from unit tests, because smaller units of the software can be tested individually and checked for errors before they are added to the main project. After a project has grown over time, a suite of unit tests can also be very helpful in debugging, because the source of an error can quickly be located.
Typically test cases are implemented as child classes of the
unittest.TestCase class. The methods
TestCase.setUp() can be overloaded to provide common setup procedures for all test methods; the method
TestCase.tearDown() can be used for cleanup; both methods are executed before (after) each test. All methods of the form
TestCase.test*() are considered test cases and will be executed by
unittest.main() is called. Alternatively, tests can be run using the
python -m unittest command with the module name.
To run several tests suites at once, the command line utility
nosetests (available in the separate
nose package) can be used: it scans all Python scrips in the current directory and executes all available test cases.
An example of a more advanced use case, where individual test can be selected and inheritance between TestCase’s is used, can be found here.