Document signal handling functions in unittest.rst

This commit is contained in:
Michael Foord 2010-04-05 00:39:50 +00:00
parent ddb20df018
commit 554303530c

View file

@ -233,6 +233,8 @@ unittest supports three command options.
reports all the results so far. A second control-C raises the normal reports all the results so far. A second control-C raises the normal
``KeyboardInterrupt`` exception. ``KeyboardInterrupt`` exception.
See `Signal Handling`_ for the functions that provide this functionality.
* -b / --buffer * -b / --buffer
The standard out and standard error streams are buffered during the test The standard out and standard error streams are buffered during the test
@ -1548,18 +1550,11 @@ Loading and running tests
Called when the test case *test* is about to be run. Called when the test case *test* is about to be run.
The default implementation simply increments the instance's :attr:`testsRun`
counter.
.. method:: stopTest(test) .. method:: stopTest(test)
Called after the test case *test* has been executed, regardless of the Called after the test case *test* has been executed, regardless of the
outcome. outcome.
The default implementation does nothing.
.. method:: startTestRun(test) .. method:: startTestRun(test)
Called once before any tests are executed. Called once before any tests are executed.
@ -1666,7 +1661,7 @@ Loading and running tests
.. function:: main([module[, defaultTest[, argv[, testRunner[, testLoader[, exit[, verbosity[, failfast[, catchbreak[,buffer]]]]]]]]]]) .. function:: main([module[, defaultTest[, argv[, testRunner[, testLoader[, exit[, verbosity[, failfast[, catchbreak[,buffer]]]]]]]]]])
,
A command-line program that runs a set of tests; this is primarily for making A command-line program that runs a set of tests; this is primarily for making
test modules conveniently executable. The simplest use for this function is to test modules conveniently executable. The simplest use for this function is to
include the following line at the end of a test script:: include the following line at the end of a test script::
@ -1848,3 +1843,33 @@ If an exception is raised in a ``setUpModule`` then none of the tests in the
module will be run and the ``tearDownModule`` will not be run. module will be run and the ``tearDownModule`` will not be run.
Signal Handling
---------------
The -c / --catch command line option to unittest, along with the ``catchbreak``
parameter to :func:`unittest.main()`, provide more friendly handling of
control-c during a test run. With catch break behavior enabled control-c will
allow the currently running test to complete, and the test run will then end
and report all the results so far. A second control-c will raise a
``KeyboardInterrupt`` in the usual way.
There are a few utility functions for framework authors to enable this
functionality within test frameworks.
.. function:: installHandler()
Install the control-C handler. When a :const:`signal.SIGINT` is received
(usually in response to the user pressing control-C) all registered results
have :meth:`~TestResult.stop` called.
.. function:: registerResult(result)
Register a :class:`TestResult` object for control-C handling. Registering a
result stores a weak reference to it, so it doesn't prevent the result from
being garbage collected.
.. function:: removeResult(result)
Remove a registered result. One a result has been removed then ``stop`` will
no longer be called on that result object in response to a control-C.