1 :mod:`unittest` --- Unit testing framework 2 ========================================== 3 4 .. module:: unittest 5 :synopsis: Unit testing framework for Python. 6 .. moduleauthor:: Steve Purcell <stephen_purcell (a] yahoo.com> 7 .. sectionauthor:: Steve Purcell <stephen_purcell (a] yahoo.com> 8 .. sectionauthor:: Fred L. Drake, Jr. <fdrake (a] acm.org> 9 .. sectionauthor:: Raymond Hettinger <python (a] rcn.com> 10 11 .. versionadded:: 2.1 12 13 (If you are already familiar with the basic concepts of testing, you might want 14 to skip to :ref:`the list of assert methods <assert-methods>`.) 15 16 The Python unit testing framework, sometimes referred to as "PyUnit," is a 17 Python language version of JUnit, by Kent Beck and Erich Gamma. JUnit is, in 18 turn, a Java version of Kent's Smalltalk testing framework. Each is the de 19 facto standard unit testing framework for its respective language. 20 21 :mod:`unittest` supports test automation, sharing of setup and shutdown code for 22 tests, aggregation of tests into collections, and independence of the tests from 23 the reporting framework. The :mod:`unittest` module provides classes that make 24 it easy to support these qualities for a set of tests. 25 26 To achieve this, :mod:`unittest` supports some important concepts: 27 28 test fixture 29 A :dfn:`test fixture` represents the preparation needed to perform one or more 30 tests, and any associate cleanup actions. This may involve, for example, 31 creating temporary or proxy databases, directories, or starting a server 32 process. 33 34 test case 35 A :dfn:`test case` is the smallest unit of testing. It checks for a specific 36 response to a particular set of inputs. :mod:`unittest` provides a base class, 37 :class:`TestCase`, which may be used to create new test cases. 38 39 test suite 40 A :dfn:`test suite` is a collection of test cases, test suites, or both. It is 41 used to aggregate tests that should be executed together. 42 43 test runner 44 A :dfn:`test runner` is a component which orchestrates the execution of tests 45 and provides the outcome to the user. The runner may use a graphical interface, 46 a textual interface, or return a special value to indicate the results of 47 executing the tests. 48 49 The test case and test fixture concepts are supported through the 50 :class:`TestCase` and :class:`FunctionTestCase` classes; the former should be 51 used when creating new tests, and the latter can be used when integrating 52 existing test code with a :mod:`unittest`\ -driven framework. When building test 53 fixtures using :class:`TestCase`, the :meth:`~TestCase.setUp` and 54 :meth:`~TestCase.tearDown` methods can be overridden to provide initialization 55 and cleanup for the fixture. With :class:`FunctionTestCase`, existing functions 56 can be passed to the constructor for these purposes. When the test is run, the 57 fixture initialization is run first; if it succeeds, the cleanup method is run 58 after the test has been executed, regardless of the outcome of the test. Each 59 instance of the :class:`TestCase` will only be used to run a single test method, 60 so a new fixture is created for each test. 61 62 Test suites are implemented by the :class:`TestSuite` class. This class allows 63 individual tests and test suites to be aggregated; when the suite is executed, 64 all tests added directly to the suite and in "child" test suites are run. 65 66 A test runner is an object that provides a single method, 67 :meth:`~TestRunner.run`, which accepts a :class:`TestCase` or :class:`TestSuite` 68 object as a parameter, and returns a result object. The class 69 :class:`TestResult` is provided for use as the result object. :mod:`unittest` 70 provides the :class:`TextTestRunner` as an example test runner which reports 71 test results on the standard error stream by default. Alternate runners can be 72 implemented for other environments (such as graphical environments) without any 73 need to derive from a specific class. 74 75 76 .. seealso:: 77 78 Module :mod:`doctest` 79 Another test-support module with a very different flavor. 80 81 `unittest2: A backport of new unittest features for Python 2.4-2.6 <https://pypi.org/project/unittest2>`_ 82 Many new features were added to unittest in Python 2.7, including test 83 discovery. unittest2 allows you to use these features with earlier 84 versions of Python. 85 86 `Simple Smalltalk Testing: With Patterns <https://web.archive.org/web/20150315073817/http://www.xprogramming.com/testfram.htm>`_ 87 Kent Beck's original paper on testing frameworks using the pattern shared 88 by :mod:`unittest`. 89 90 `Nose <https://nose.readthedocs.org/en/latest/>`_ and `py.test <http://pytest.org>`_ 91 Third-party unittest frameworks with a lighter-weight syntax for writing 92 tests. For example, ``assert func(10) == 42``. 93 94 `The Python Testing Tools Taxonomy <https://wiki.python.org/moin/PythonTestingToolsTaxonomy>`_ 95 An extensive list of Python testing tools including functional testing 96 frameworks and mock object libraries. 97 98 `Testing in Python Mailing List <http://lists.idyll.org/listinfo/testing-in-python>`_ 99 A special-interest-group for discussion of testing, and testing tools, 100 in Python. 101 102 103 .. _unittest-minimal-example: 104 105 Basic example 106 ------------- 107 108 The :mod:`unittest` module provides a rich set of tools for constructing and 109 running tests. This section demonstrates that a small subset of the tools 110 suffice to meet the needs of most users. 111 112 Here is a short script to test three string methods:: 113 114 import unittest 115 116 class TestStringMethods(unittest.TestCase): 117 118 def test_upper(self): 119 self.assertEqual('foo'.upper(), 'FOO') 120 121 def test_isupper(self): 122 self.assertTrue('FOO'.isupper()) 123 self.assertFalse('Foo'.isupper()) 124 125 def test_split(self): 126 s = 'hello world' 127 self.assertEqual(s.split(), ['hello', 'world']) 128 # check that s.split fails when the separator is not a string 129 with self.assertRaises(TypeError): 130 s.split(2) 131 132 if __name__ == '__main__': 133 unittest.main() 134 135 136 A testcase is created by subclassing :class:`unittest.TestCase`. The three 137 individual tests are defined with methods whose names start with the letters 138 ``test``. This naming convention informs the test runner about which methods 139 represent tests. 140 141 The crux of each test is a call to :meth:`~TestCase.assertEqual` to check for an 142 expected result; :meth:`~TestCase.assertTrue` or :meth:`~TestCase.assertFalse` 143 to verify a condition; or :meth:`~TestCase.assertRaises` to verify that a 144 specific exception gets raised. These methods are used instead of the 145 :keyword:`assert` statement so the test runner can accumulate all test results 146 and produce a report. 147 148 The :meth:`~TestCase.setUp` and :meth:`~TestCase.tearDown` methods allow you 149 to define instructions that will be executed before and after each test method. 150 They are covered in more detail in the section :ref:`organizing-tests`. 151 152 The final block shows a simple way to run the tests. :func:`unittest.main` 153 provides a command-line interface to the test script. When run from the command 154 line, the above script produces an output that looks like this:: 155 156 ... 157 ---------------------------------------------------------------------- 158 Ran 3 tests in 0.000s 159 160 OK 161 162 Instead of :func:`unittest.main`, there are other ways to run the tests with a 163 finer level of control, less terse output, and no requirement to be run from the 164 command line. For example, the last two lines may be replaced with:: 165 166 suite = unittest.TestLoader().loadTestsFromTestCase(TestStringMethods) 167 unittest.TextTestRunner(verbosity=2).run(suite) 168 169 Running the revised script from the interpreter or another script produces the 170 following output:: 171 172 test_isupper (__main__.TestStringMethods) ... ok 173 test_split (__main__.TestStringMethods) ... ok 174 test_upper (__main__.TestStringMethods) ... ok 175 176 ---------------------------------------------------------------------- 177 Ran 3 tests in 0.001s 178 179 OK 180 181 The above examples show the most commonly used :mod:`unittest` features which 182 are sufficient to meet many everyday testing needs. The remainder of the 183 documentation explores the full feature set from first principles. 184 185 186 .. _unittest-command-line-interface: 187 188 Command-Line Interface 189 ---------------------- 190 191 The unittest module can be used from the command line to run tests from 192 modules, classes or even individual test methods:: 193 194 python -m unittest test_module1 test_module2 195 python -m unittest test_module.TestClass 196 python -m unittest test_module.TestClass.test_method 197 198 You can pass in a list with any combination of module names, and fully 199 qualified class or method names. 200 201 You can run tests with more detail (higher verbosity) by passing in the -v flag:: 202 203 python -m unittest -v test_module 204 205 For a list of all the command-line options:: 206 207 python -m unittest -h 208 209 .. versionchanged:: 2.7 210 In earlier versions it was only possible to run individual test methods and 211 not modules or classes. 212 213 214 Command-line options 215 ~~~~~~~~~~~~~~~~~~~~ 216 217 :program:`unittest` supports these command-line options: 218 219 .. program:: unittest 220 221 .. cmdoption:: -b, --buffer 222 223 The standard output and standard error streams are buffered during the test 224 run. Output during a passing test is discarded. Output is echoed normally 225 on test fail or error and is added to the failure messages. 226 227 .. cmdoption:: -c, --catch 228 229 :kbd:`Control-C` during the test run waits for the current test to end and then 230 reports all the results so far. A second :kbd:`Control-C` raises the normal 231 :exc:`KeyboardInterrupt` exception. 232 233 See `Signal Handling`_ for the functions that provide this functionality. 234 235 .. cmdoption:: -f, --failfast 236 237 Stop the test run on the first error or failure. 238 239 .. versionadded:: 2.7 240 The command-line options ``-b``, ``-c`` and ``-f`` were added. 241 242 The command line can also be used for test discovery, for running all of the 243 tests in a project or just a subset. 244 245 246 .. _unittest-test-discovery: 247 248 Test Discovery 249 -------------- 250 251 .. versionadded:: 2.7 252 253 Unittest supports simple test discovery. In order to be compatible with test 254 discovery, all of the test files must be :ref:`modules <tut-modules>` or 255 :ref:`packages <tut-packages>` importable from the top-level directory of 256 the project (this means that their filenames must be valid 257 :ref:`identifiers <identifiers>`). 258 259 Test discovery is implemented in :meth:`TestLoader.discover`, but can also be 260 used from the command line. The basic command-line usage is:: 261 262 cd project_directory 263 python -m unittest discover 264 265 The ``discover`` sub-command has the following options: 266 267 .. program:: unittest discover 268 269 .. cmdoption:: -v, --verbose 270 271 Verbose output 272 273 .. cmdoption:: -s, --start-directory directory 274 275 Directory to start discovery (``.`` default) 276 277 .. cmdoption:: -p, --pattern pattern 278 279 Pattern to match test files (``test*.py`` default) 280 281 .. cmdoption:: -t, --top-level-directory directory 282 283 Top level directory of project (defaults to start directory) 284 285 The :option:`-s`, :option:`-p`, and :option:`-t` options can be passed in 286 as positional arguments in that order. The following two command lines 287 are equivalent:: 288 289 python -m unittest discover -s project_directory -p "*_test.py" 290 python -m unittest discover project_directory "*_test.py" 291 292 As well as being a path it is possible to pass a package name, for example 293 ``myproject.subpackage.test``, as the start directory. The package name you 294 supply will then be imported and its location on the filesystem will be used 295 as the start directory. 296 297 .. caution:: 298 299 Test discovery loads tests by importing them. Once test discovery has 300 found all the test files from the start directory you specify it turns the 301 paths into package names to import. For example :file:`foo/bar/baz.py` will be 302 imported as ``foo.bar.baz``. 303 304 If you have a package installed globally and attempt test discovery on 305 a different copy of the package then the import *could* happen from the 306 wrong place. If this happens test discovery will warn you and exit. 307 308 If you supply the start directory as a package name rather than a 309 path to a directory then discover assumes that whichever location it 310 imports from is the location you intended, so you will not get the 311 warning. 312 313 Test modules and packages can customize test loading and discovery by through 314 the `load_tests protocol`_. 315 316 317 .. _organizing-tests: 318 319 Organizing test code 320 -------------------- 321 322 The basic building blocks of unit testing are :dfn:`test cases` --- single 323 scenarios that must be set up and checked for correctness. In :mod:`unittest`, 324 test cases are represented by instances of :mod:`unittest`'s :class:`TestCase` 325 class. To make your own test cases you must write subclasses of 326 :class:`TestCase`, or use :class:`FunctionTestCase`. 327 328 An instance of a :class:`TestCase`\ -derived class is an object that can 329 completely run a single test method, together with optional set-up and tidy-up 330 code. 331 332 The testing code of a :class:`TestCase` instance should be entirely self 333 contained, such that it can be run either in isolation or in arbitrary 334 combination with any number of other test cases. 335 336 The simplest :class:`TestCase` subclass will simply override the 337 :meth:`~TestCase.runTest` method in order to perform specific testing code:: 338 339 import unittest 340 341 class DefaultWidgetSizeTestCase(unittest.TestCase): 342 def runTest(self): 343 widget = Widget('The widget') 344 self.assertEqual(widget.size(), (50, 50), 'incorrect default size') 345 346 Note that in order to test something, we use one of the :meth:`assert\*` 347 methods provided by the :class:`TestCase` base class. If the test fails, an 348 exception will be raised, and :mod:`unittest` will identify the test case as a 349 :dfn:`failure`. Any other exceptions will be treated as :dfn:`errors`. This 350 helps you identify where the problem is: :dfn:`failures` are caused by incorrect 351 results - a 5 where you expected a 6. :dfn:`Errors` are caused by incorrect 352 code - e.g., a :exc:`TypeError` caused by an incorrect function call. 353 354 The way to run a test case will be described later. For now, note that to 355 construct an instance of such a test case, we call its constructor without 356 arguments:: 357 358 testCase = DefaultWidgetSizeTestCase() 359 360 Now, such test cases can be numerous, and their set-up can be repetitive. In 361 the above case, constructing a :class:`Widget` in each of 100 Widget test case 362 subclasses would mean unsightly duplication. 363 364 Luckily, we can factor out such set-up code by implementing a method called 365 :meth:`~TestCase.setUp`, which the testing framework will automatically call for 366 us when we run the test:: 367 368 import unittest 369 370 class SimpleWidgetTestCase(unittest.TestCase): 371 def setUp(self): 372 self.widget = Widget('The widget') 373 374 class DefaultWidgetSizeTestCase(SimpleWidgetTestCase): 375 def runTest(self): 376 self.assertEqual(self.widget.size(), (50,50), 377 'incorrect default size') 378 379 class WidgetResizeTestCase(SimpleWidgetTestCase): 380 def runTest(self): 381 self.widget.resize(100,150) 382 self.assertEqual(self.widget.size(), (100,150), 383 'wrong size after resize') 384 385 If the :meth:`~TestCase.setUp` method raises an exception while the test is 386 running, the framework will consider the test to have suffered an error, and the 387 :meth:`~TestCase.runTest` method will not be executed. 388 389 Similarly, we can provide a :meth:`~TestCase.tearDown` method that tidies up 390 after the :meth:`~TestCase.runTest` method has been run:: 391 392 import unittest 393 394 class SimpleWidgetTestCase(unittest.TestCase): 395 def setUp(self): 396 self.widget = Widget('The widget') 397 398 def tearDown(self): 399 self.widget.dispose() 400 self.widget = None 401 402 If :meth:`~TestCase.setUp` succeeded, the :meth:`~TestCase.tearDown` method will 403 be run whether :meth:`~TestCase.runTest` succeeded or not. 404 405 Such a working environment for the testing code is called a :dfn:`fixture`. 406 407 Often, many small test cases will use the same fixture. In this case, we would 408 end up subclassing :class:`SimpleWidgetTestCase` into many small one-method 409 classes such as :class:`DefaultWidgetSizeTestCase`. This is time-consuming and 410 discouraging, so in the same vein as JUnit, :mod:`unittest` provides a simpler 411 mechanism:: 412 413 import unittest 414 415 class WidgetTestCase(unittest.TestCase): 416 def setUp(self): 417 self.widget = Widget('The widget') 418 419 def tearDown(self): 420 self.widget.dispose() 421 self.widget = None 422 423 def test_default_size(self): 424 self.assertEqual(self.widget.size(), (50,50), 425 'incorrect default size') 426 427 def test_resize(self): 428 self.widget.resize(100,150) 429 self.assertEqual(self.widget.size(), (100,150), 430 'wrong size after resize') 431 432 Here we have not provided a :meth:`~TestCase.runTest` method, but have instead 433 provided two different test methods. Class instances will now each run one of 434 the :meth:`test_\*` methods, with ``self.widget`` created and destroyed 435 separately for each instance. When creating an instance we must specify the 436 test method it is to run. We do this by passing the method name in the 437 constructor:: 438 439 defaultSizeTestCase = WidgetTestCase('test_default_size') 440 resizeTestCase = WidgetTestCase('test_resize') 441 442 Test case instances are grouped together according to the features they test. 443 :mod:`unittest` provides a mechanism for this: the :dfn:`test suite`, 444 represented by :mod:`unittest`'s :class:`TestSuite` class:: 445 446 widgetTestSuite = unittest.TestSuite() 447 widgetTestSuite.addTest(WidgetTestCase('test_default_size')) 448 widgetTestSuite.addTest(WidgetTestCase('test_resize')) 449 450 For the ease of running tests, as we will see later, it is a good idea to 451 provide in each test module a callable object that returns a pre-built test 452 suite:: 453 454 def suite(): 455 suite = unittest.TestSuite() 456 suite.addTest(WidgetTestCase('test_default_size')) 457 suite.addTest(WidgetTestCase('test_resize')) 458 return suite 459 460 or even:: 461 462 def suite(): 463 tests = ['test_default_size', 'test_resize'] 464 465 return unittest.TestSuite(map(WidgetTestCase, tests)) 466 467 Since it is a common pattern to create a :class:`TestCase` subclass with many 468 similarly named test functions, :mod:`unittest` provides a :class:`TestLoader` 469 class that can be used to automate the process of creating a test suite and 470 populating it with individual tests. For example, :: 471 472 suite = unittest.TestLoader().loadTestsFromTestCase(WidgetTestCase) 473 474 will create a test suite that will run ``WidgetTestCase.test_default_size()`` and 475 ``WidgetTestCase.test_resize``. :class:`TestLoader` uses the ``'test'`` method 476 name prefix to identify test methods automatically. 477 478 Note that the order in which the various test cases will be run is 479 determined by sorting the test function names with respect to the 480 built-in ordering for strings. 481 482 Often it is desirable to group suites of test cases together, so as to run tests 483 for the whole system at once. This is easy, since :class:`TestSuite` instances 484 can be added to a :class:`TestSuite` just as :class:`TestCase` instances can be 485 added to a :class:`TestSuite`:: 486 487 suite1 = module1.TheTestSuite() 488 suite2 = module2.TheTestSuite() 489 alltests = unittest.TestSuite([suite1, suite2]) 490 491 You can place the definitions of test cases and test suites in the same modules 492 as the code they are to test (such as :file:`widget.py`), but there are several 493 advantages to placing the test code in a separate module, such as 494 :file:`test_widget.py`: 495 496 * The test module can be run standalone from the command line. 497 498 * The test code can more easily be separated from shipped code. 499 500 * There is less temptation to change test code to fit the code it tests without 501 a good reason. 502 503 * Test code should be modified much less frequently than the code it tests. 504 505 * Tested code can be refactored more easily. 506 507 * Tests for modules written in C must be in separate modules anyway, so why not 508 be consistent? 509 510 * If the testing strategy changes, there is no need to change the source code. 511 512 513 .. _legacy-unit-tests: 514 515 Re-using old test code 516 ---------------------- 517 518 Some users will find that they have existing test code that they would like to 519 run from :mod:`unittest`, without converting every old test function to a 520 :class:`TestCase` subclass. 521 522 For this reason, :mod:`unittest` provides a :class:`FunctionTestCase` class. 523 This subclass of :class:`TestCase` can be used to wrap an existing test 524 function. Set-up and tear-down functions can also be provided. 525 526 Given the following test function:: 527 528 def testSomething(): 529 something = makeSomething() 530 assert something.name is not None 531 # ... 532 533 one can create an equivalent test case instance as follows:: 534 535 testcase = unittest.FunctionTestCase(testSomething) 536 537 If there are additional set-up and tear-down methods that should be called as 538 part of the test case's operation, they can also be provided like so:: 539 540 testcase = unittest.FunctionTestCase(testSomething, 541 setUp=makeSomethingDB, 542 tearDown=deleteSomethingDB) 543 544 To make migrating existing test suites easier, :mod:`unittest` supports tests 545 raising :exc:`AssertionError` to indicate test failure. However, it is 546 recommended that you use the explicit :meth:`TestCase.fail\*` and 547 :meth:`TestCase.assert\*` methods instead, as future versions of :mod:`unittest` 548 may treat :exc:`AssertionError` differently. 549 550 .. note:: 551 552 Even though :class:`FunctionTestCase` can be used to quickly convert an 553 existing test base over to a :mod:`unittest`\ -based system, this approach is 554 not recommended. Taking the time to set up proper :class:`TestCase` 555 subclasses will make future test refactorings infinitely easier. 556 557 In some cases, the existing tests may have been written using the :mod:`doctest` 558 module. If so, :mod:`doctest` provides a :class:`DocTestSuite` class that can 559 automatically build :class:`unittest.TestSuite` instances from the existing 560 :mod:`doctest`\ -based tests. 561 562 563 .. _unittest-skipping: 564 565 Skipping tests and expected failures 566 ------------------------------------ 567 568 .. versionadded:: 2.7 569 570 Unittest supports skipping individual test methods and even whole classes of 571 tests. In addition, it supports marking a test as an "expected failure," a test 572 that is broken and will fail, but shouldn't be counted as a failure on a 573 :class:`TestResult`. 574 575 Skipping a test is simply a matter of using the :func:`skip` :term:`decorator` 576 or one of its conditional variants. 577 578 Basic skipping looks like this:: 579 580 class MyTestCase(unittest.TestCase): 581 582 @unittest.skip("demonstrating skipping") 583 def test_nothing(self): 584 self.fail("shouldn't happen") 585 586 @unittest.skipIf(mylib.__version__ < (1, 3), 587 "not supported in this library version") 588 def test_format(self): 589 # Tests that work for only a certain version of the library. 590 pass 591 592 @unittest.skipUnless(sys.platform.startswith("win"), "requires Windows") 593 def test_windows_support(self): 594 # windows specific testing code 595 pass 596 597 This is the output of running the example above in verbose mode:: 598 599 test_format (__main__.MyTestCase) ... skipped 'not supported in this library version' 600 test_nothing (__main__.MyTestCase) ... skipped 'demonstrating skipping' 601 test_windows_support (__main__.MyTestCase) ... skipped 'requires Windows' 602 603 ---------------------------------------------------------------------- 604 Ran 3 tests in 0.005s 605 606 OK (skipped=3) 607 608 Classes can be skipped just like methods:: 609 610 @unittest.skip("showing class skipping") 611 class MySkippedTestCase(unittest.TestCase): 612 def test_not_run(self): 613 pass 614 615 :meth:`TestCase.setUp` can also skip the test. This is useful when a resource 616 that needs to be set up is not available. 617 618 Expected failures use the :func:`expectedFailure` decorator. :: 619 620 class ExpectedFailureTestCase(unittest.TestCase): 621 @unittest.expectedFailure 622 def test_fail(self): 623 self.assertEqual(1, 0, "broken") 624 625 It's easy to roll your own skipping decorators by making a decorator that calls 626 :func:`skip` on the test when it wants it to be skipped. This decorator skips 627 the test unless the passed object has a certain attribute:: 628 629 def skipUnlessHasattr(obj, attr): 630 if hasattr(obj, attr): 631 return lambda func: func 632 return unittest.skip("{!r} doesn't have {!r}".format(obj, attr)) 633 634 The following decorators implement test skipping and expected failures: 635 636 .. function:: skip(reason) 637 638 Unconditionally skip the decorated test. *reason* should describe why the 639 test is being skipped. 640 641 .. function:: skipIf(condition, reason) 642 643 Skip the decorated test if *condition* is true. 644 645 .. function:: skipUnless(condition, reason) 646 647 Skip the decorated test unless *condition* is true. 648 649 .. function:: expectedFailure 650 651 Mark the test as an expected failure. If the test fails when run, the test 652 is not counted as a failure. 653 654 .. exception:: SkipTest(reason) 655 656 This exception is raised to skip a test. 657 658 Usually you can use :meth:`TestCase.skipTest` or one of the skipping 659 decorators instead of raising this directly. 660 661 Skipped tests will not have :meth:`setUp` or :meth:`tearDown` run around them. 662 Skipped classes will not have :meth:`setUpClass` or :meth:`tearDownClass` run. 663 664 665 .. _unittest-contents: 666 667 Classes and functions 668 --------------------- 669 670 This section describes in depth the API of :mod:`unittest`. 671 672 673 .. _testcase-objects: 674 675 Test cases 676 ~~~~~~~~~~ 677 678 .. class:: TestCase(methodName='runTest') 679 680 Instances of the :class:`TestCase` class represent the smallest testable units 681 in the :mod:`unittest` universe. This class is intended to be used as a base 682 class, with specific tests being implemented by concrete subclasses. This class 683 implements the interface needed by the test runner to allow it to drive the 684 test, and methods that the test code can use to check for and report various 685 kinds of failure. 686 687 Each instance of :class:`TestCase` will run a single test method: the method 688 named *methodName*. If you remember, we had an earlier example that went 689 something like this:: 690 691 def suite(): 692 suite = unittest.TestSuite() 693 suite.addTest(WidgetTestCase('test_default_size')) 694 suite.addTest(WidgetTestCase('test_resize')) 695 return suite 696 697 Here, we create two instances of :class:`WidgetTestCase`, each of which runs a 698 single test. 699 700 *methodName* defaults to :meth:`runTest`. 701 702 :class:`TestCase` instances provide three groups of methods: one group used 703 to run the test, another used by the test implementation to check conditions 704 and report failures, and some inquiry methods allowing information about the 705 test itself to be gathered. 706 707 Methods in the first group (running the test) are: 708 709 710 .. method:: setUp() 711 712 Method called to prepare the test fixture. This is called immediately 713 before calling the test method; other than :exc:`AssertionError` or :exc:`SkipTest`, 714 any exception raised by this method will be considered an error rather than 715 a test failure. The default implementation does nothing. 716 717 718 .. method:: tearDown() 719 720 Method called immediately after the test method has been called and the 721 result recorded. This is called even if the test method raised an 722 exception, so the implementation in subclasses may need to be particularly 723 careful about checking internal state. Any exception, other than 724 :exc:`AssertionError` or :exc:`SkipTest`, raised by this method will be 725 considered an additional error rather than a test failure (thus increasing 726 the total number of reported errors). This method will only be called if 727 the :meth:`setUp` succeeds, regardless of the outcome of the test method. 728 The default implementation does nothing. 729 730 731 .. method:: setUpClass() 732 733 A class method called before tests in an individual class are run. 734 ``setUpClass`` is called with the class as the only argument 735 and must be decorated as a :func:`classmethod`:: 736 737 @classmethod 738 def setUpClass(cls): 739 ... 740 741 See `Class and Module Fixtures`_ for more details. 742 743 .. versionadded:: 2.7 744 745 746 .. method:: tearDownClass() 747 748 A class method called after tests in an individual class have run. 749 ``tearDownClass`` is called with the class as the only argument 750 and must be decorated as a :meth:`classmethod`:: 751 752 @classmethod 753 def tearDownClass(cls): 754 ... 755 756 See `Class and Module Fixtures`_ for more details. 757 758 .. versionadded:: 2.7 759 760 761 .. method:: run(result=None) 762 763 Run the test, collecting the result into the test result object passed as 764 *result*. If *result* is omitted or ``None``, a temporary result 765 object is created (by calling the :meth:`defaultTestResult` method) and 766 used. The result object is not returned to :meth:`run`'s caller. 767 768 The same effect may be had by simply calling the :class:`TestCase` 769 instance. 770 771 772 .. method:: skipTest(reason) 773 774 Calling this during a test method or :meth:`setUp` skips the current 775 test. See :ref:`unittest-skipping` for more information. 776 777 .. versionadded:: 2.7 778 779 780 .. method:: debug() 781 782 Run the test without collecting the result. This allows exceptions raised 783 by the test to be propagated to the caller, and can be used to support 784 running tests under a debugger. 785 786 .. _assert-methods: 787 788 The :class:`TestCase` class provides several assert methods to check for and 789 report failures. The following table lists the most commonly used methods 790 (see the tables below for more assert methods): 791 792 +-----------------------------------------+-----------------------------+---------------+ 793 | Method | Checks that | New in | 794 +=========================================+=============================+===============+ 795 | :meth:`assertEqual(a, b) | ``a == b`` | | 796 | <TestCase.assertEqual>` | | | 797 +-----------------------------------------+-----------------------------+---------------+ 798 | :meth:`assertNotEqual(a, b) | ``a != b`` | | 799 | <TestCase.assertNotEqual>` | | | 800 +-----------------------------------------+-----------------------------+---------------+ 801 | :meth:`assertTrue(x) | ``bool(x) is True`` | | 802 | <TestCase.assertTrue>` | | | 803 +-----------------------------------------+-----------------------------+---------------+ 804 | :meth:`assertFalse(x) | ``bool(x) is False`` | | 805 | <TestCase.assertFalse>` | | | 806 +-----------------------------------------+-----------------------------+---------------+ 807 | :meth:`assertIs(a, b) | ``a is b`` | 2.7 | 808 | <TestCase.assertIs>` | | | 809 +-----------------------------------------+-----------------------------+---------------+ 810 | :meth:`assertIsNot(a, b) | ``a is not b`` | 2.7 | 811 | <TestCase.assertIsNot>` | | | 812 +-----------------------------------------+-----------------------------+---------------+ 813 | :meth:`assertIsNone(x) | ``x is None`` | 2.7 | 814 | <TestCase.assertIsNone>` | | | 815 +-----------------------------------------+-----------------------------+---------------+ 816 | :meth:`assertIsNotNone(x) | ``x is not None`` | 2.7 | 817 | <TestCase.assertIsNotNone>` | | | 818 +-----------------------------------------+-----------------------------+---------------+ 819 | :meth:`assertIn(a, b) | ``a in b`` | 2.7 | 820 | <TestCase.assertIn>` | | | 821 +-----------------------------------------+-----------------------------+---------------+ 822 | :meth:`assertNotIn(a, b) | ``a not in b`` | 2.7 | 823 | <TestCase.assertNotIn>` | | | 824 +-----------------------------------------+-----------------------------+---------------+ 825 | :meth:`assertIsInstance(a, b) | ``isinstance(a, b)`` | 2.7 | 826 | <TestCase.assertIsInstance>` | | | 827 +-----------------------------------------+-----------------------------+---------------+ 828 | :meth:`assertNotIsInstance(a, b) | ``not isinstance(a, b)`` | 2.7 | 829 | <TestCase.assertNotIsInstance>` | | | 830 +-----------------------------------------+-----------------------------+---------------+ 831 832 All the assert methods (except :meth:`assertRaises`, 833 :meth:`assertRaisesRegexp`) 834 accept a *msg* argument that, if specified, is used as the error message on 835 failure (see also :data:`longMessage`). 836 837 .. method:: assertEqual(first, second, msg=None) 838 839 Test that *first* and *second* are equal. If the values do not compare 840 equal, the test will fail. 841 842 In addition, if *first* and *second* are the exact same type and one of 843 list, tuple, dict, set, frozenset or unicode or any type that a subclass 844 registers with :meth:`addTypeEqualityFunc` the type-specific equality 845 function will be called in order to generate a more useful default 846 error message (see also the :ref:`list of type-specific methods 847 <type-specific-methods>`). 848 849 .. versionchanged:: 2.7 850 Added the automatic calling of type-specific equality function. 851 852 853 .. method:: assertNotEqual(first, second, msg=None) 854 855 Test that *first* and *second* are not equal. If the values do compare 856 equal, the test will fail. 857 858 .. method:: assertTrue(expr, msg=None) 859 assertFalse(expr, msg=None) 860 861 Test that *expr* is true (or false). 862 863 Note that this is equivalent to ``bool(expr) is True`` and not to ``expr 864 is True`` (use ``assertIs(expr, True)`` for the latter). This method 865 should also be avoided when more specific methods are available (e.g. 866 ``assertEqual(a, b)`` instead of ``assertTrue(a == b)``), because they 867 provide a better error message in case of failure. 868 869 870 .. method:: assertIs(first, second, msg=None) 871 assertIsNot(first, second, msg=None) 872 873 Test that *first* and *second* evaluate (or don't evaluate) to the same object. 874 875 .. versionadded:: 2.7 876 877 878 .. method:: assertIsNone(expr, msg=None) 879 assertIsNotNone(expr, msg=None) 880 881 Test that *expr* is (or is not) ``None``. 882 883 .. versionadded:: 2.7 884 885 886 .. method:: assertIn(first, second, msg=None) 887 assertNotIn(first, second, msg=None) 888 889 Test that *first* is (or is not) in *second*. 890 891 .. versionadded:: 2.7 892 893 894 .. method:: assertIsInstance(obj, cls, msg=None) 895 assertNotIsInstance(obj, cls, msg=None) 896 897 Test that *obj* is (or is not) an instance of *cls* (which can be a 898 class or a tuple of classes, as supported by :func:`isinstance`). 899 To check for the exact type, use :func:`assertIs(type(obj), cls) <assertIs>`. 900 901 .. versionadded:: 2.7 902 903 904 It is also possible to check that exceptions and warnings are raised using 905 the following methods: 906 907 +---------------------------------------------------------+--------------------------------------+------------+ 908 | Method | Checks that | New in | 909 +=========================================================+======================================+============+ 910 | :meth:`assertRaises(exc, fun, *args, **kwds) | ``fun(*args, **kwds)`` raises *exc* | | 911 | <TestCase.assertRaises>` | | | 912 +---------------------------------------------------------+--------------------------------------+------------+ 913 | :meth:`assertRaisesRegexp(exc, r, fun, *args, **kwds) | ``fun(*args, **kwds)`` raises *exc* | 2.7 | 914 | <TestCase.assertRaisesRegexp>` | and the message matches regex *r* | | 915 +---------------------------------------------------------+--------------------------------------+------------+ 916 917 .. method:: assertRaises(exception, callable, *args, **kwds) 918 assertRaises(exception) 919 920 Test that an exception is raised when *callable* is called with any 921 positional or keyword arguments that are also passed to 922 :meth:`assertRaises`. The test passes if *exception* is raised, is an 923 error if another exception is raised, or fails if no exception is raised. 924 To catch any of a group of exceptions, a tuple containing the exception 925 classes may be passed as *exception*. 926 927 If only the *exception* argument is given, returns a context manager so 928 that the code under test can be written inline rather than as a function:: 929 930 with self.assertRaises(SomeException): 931 do_something() 932 933 The context manager will store the caught exception object in its 934 :attr:`exception` attribute. This can be useful if the intention 935 is to perform additional checks on the exception raised:: 936 937 with self.assertRaises(SomeException) as cm: 938 do_something() 939 940 the_exception = cm.exception 941 self.assertEqual(the_exception.error_code, 3) 942 943 .. versionchanged:: 2.7 944 Added the ability to use :meth:`assertRaises` as a context manager. 945 946 947 .. method:: assertRaisesRegexp(exception, regexp, callable, *args, **kwds) 948 assertRaisesRegexp(exception, regexp) 949 950 Like :meth:`assertRaises` but also tests that *regexp* matches 951 on the string representation of the raised exception. *regexp* may be 952 a regular expression object or a string containing a regular expression 953 suitable for use by :func:`re.search`. Examples:: 954 955 self.assertRaisesRegexp(ValueError, "invalid literal for.*XYZ'$", 956 int, 'XYZ') 957 958 or:: 959 960 with self.assertRaisesRegexp(ValueError, 'literal'): 961 int('XYZ') 962 963 .. versionadded:: 2.7 964 965 966 967 There are also other methods used to perform more specific checks, such as: 968 969 +---------------------------------------+--------------------------------+--------------+ 970 | Method | Checks that | New in | 971 +=======================================+================================+==============+ 972 | :meth:`assertAlmostEqual(a, b) | ``round(a-b, 7) == 0`` | | 973 | <TestCase.assertAlmostEqual>` | | | 974 +---------------------------------------+--------------------------------+--------------+ 975 | :meth:`assertNotAlmostEqual(a, b) | ``round(a-b, 7) != 0`` | | 976 | <TestCase.assertNotAlmostEqual>` | | | 977 +---------------------------------------+--------------------------------+--------------+ 978 | :meth:`assertGreater(a, b) | ``a > b`` | 2.7 | 979 | <TestCase.assertGreater>` | | | 980 +---------------------------------------+--------------------------------+--------------+ 981 | :meth:`assertGreaterEqual(a, b) | ``a >= b`` | 2.7 | 982 | <TestCase.assertGreaterEqual>` | | | 983 +---------------------------------------+--------------------------------+--------------+ 984 | :meth:`assertLess(a, b) | ``a < b`` | 2.7 | 985 | <TestCase.assertLess>` | | | 986 +---------------------------------------+--------------------------------+--------------+ 987 | :meth:`assertLessEqual(a, b) | ``a <= b`` | 2.7 | 988 | <TestCase.assertLessEqual>` | | | 989 +---------------------------------------+--------------------------------+--------------+ 990 | :meth:`assertRegexpMatches(s, r) | ``r.search(s)`` | 2.7 | 991 | <TestCase.assertRegexpMatches>` | | | 992 +---------------------------------------+--------------------------------+--------------+ 993 | :meth:`assertNotRegexpMatches(s, r) | ``not r.search(s)`` | 2.7 | 994 | <TestCase.assertNotRegexpMatches>` | | | 995 +---------------------------------------+--------------------------------+--------------+ 996 | :meth:`assertItemsEqual(a, b) | sorted(a) == sorted(b) and | 2.7 | 997 | <TestCase.assertItemsEqual>` | works with unhashable objs | | 998 +---------------------------------------+--------------------------------+--------------+ 999 | :meth:`assertDictContainsSubset(a, b) | all the key/value pairs | 2.7 | 1000 | <TestCase.assertDictContainsSubset>` | in *a* exist in *b* | | 1001 +---------------------------------------+--------------------------------+--------------+ 1002 1003 1004 .. method:: assertAlmostEqual(first, second, places=7, msg=None, delta=None) 1005 assertNotAlmostEqual(first, second, places=7, msg=None, delta=None) 1006 1007 Test that *first* and *second* are approximately (or not approximately) 1008 equal by computing the difference, rounding to the given number of 1009 decimal *places* (default 7), and comparing to zero. Note that these 1010 methods round the values to the given number of *decimal places* (i.e. 1011 like the :func:`round` function) and not *significant digits*. 1012 1013 If *delta* is supplied instead of *places* then the difference 1014 between *first* and *second* must be less or equal to (or greater than) *delta*. 1015 1016 Supplying both *delta* and *places* raises a ``TypeError``. 1017 1018 .. versionchanged:: 2.7 1019 :meth:`assertAlmostEqual` automatically considers almost equal objects 1020 that compare equal. :meth:`assertNotAlmostEqual` automatically fails 1021 if the objects compare equal. Added the *delta* keyword argument. 1022 1023 1024 1025 .. method:: assertGreater(first, second, msg=None) 1026 assertGreaterEqual(first, second, msg=None) 1027 assertLess(first, second, msg=None) 1028 assertLessEqual(first, second, msg=None) 1029 1030 Test that *first* is respectively >, >=, < or <= than *second* depending 1031 on the method name. If not, the test will fail:: 1032 1033 >>> self.assertGreaterEqual(3, 4) 1034 AssertionError: "3" unexpectedly not greater than or equal to "4" 1035 1036 .. versionadded:: 2.7 1037 1038 1039 .. method:: assertRegexpMatches(text, regexp, msg=None) 1040 1041 Test that a *regexp* search matches *text*. In case 1042 of failure, the error message will include the pattern and the *text* (or 1043 the pattern and the part of *text* that unexpectedly matched). *regexp* 1044 may be a regular expression object or a string containing a regular 1045 expression suitable for use by :func:`re.search`. 1046 1047 .. versionadded:: 2.7 1048 1049 1050 .. method:: assertNotRegexpMatches(text, regexp, msg=None) 1051 1052 Verifies that a *regexp* search does not match *text*. Fails with an error 1053 message including the pattern and the part of *text* that matches. *regexp* 1054 may be a regular expression object or a string containing a regular 1055 expression suitable for use by :func:`re.search`. 1056 1057 .. versionadded:: 2.7 1058 1059 1060 .. method:: assertItemsEqual(actual, expected, msg=None) 1061 1062 Test that sequence *expected* contains the same elements as *actual*, 1063 regardless of their order. When they don't, an error message listing the 1064 differences between the sequences will be generated. 1065 1066 Duplicate elements are *not* ignored when comparing *actual* and 1067 *expected*. It verifies if each element has the same count in both 1068 sequences. It is the equivalent of ``assertEqual(sorted(expected), 1069 sorted(actual))`` but it works with sequences of unhashable objects as 1070 well. 1071 1072 In Python 3, this method is named ``assertCountEqual``. 1073 1074 .. versionadded:: 2.7 1075 1076 1077 .. method:: assertDictContainsSubset(expected, actual, msg=None) 1078 1079 Tests whether the key/value pairs in dictionary *actual* are a 1080 superset of those in *expected*. If not, an error message listing 1081 the missing keys and mismatched values is generated. 1082 1083 .. versionadded:: 2.7 1084 .. deprecated:: 3.2 1085 1086 1087 1088 .. _type-specific-methods: 1089 1090 The :meth:`assertEqual` method dispatches the equality check for objects of 1091 the same type to different type-specific methods. These methods are already 1092 implemented for most of the built-in types, but it's also possible to 1093 register new methods using :meth:`addTypeEqualityFunc`: 1094 1095 .. method:: addTypeEqualityFunc(typeobj, function) 1096 1097 Registers a type-specific method called by :meth:`assertEqual` to check 1098 if two objects of exactly the same *typeobj* (not subclasses) compare 1099 equal. *function* must take two positional arguments and a third msg=None 1100 keyword argument just as :meth:`assertEqual` does. It must raise 1101 :data:`self.failureException(msg) <failureException>` when inequality 1102 between the first two parameters is detected -- possibly providing useful 1103 information and explaining the inequalities in details in the error 1104 message. 1105 1106 .. versionadded:: 2.7 1107 1108 The list of type-specific methods automatically used by 1109 :meth:`~TestCase.assertEqual` are summarized in the following table. Note 1110 that it's usually not necessary to invoke these methods directly. 1111 1112 +-----------------------------------------+-----------------------------+--------------+ 1113 | Method | Used to compare | New in | 1114 +=========================================+=============================+==============+ 1115 | :meth:`assertMultiLineEqual(a, b) | strings | 2.7 | 1116 | <TestCase.assertMultiLineEqual>` | | | 1117 +-----------------------------------------+-----------------------------+--------------+ 1118 | :meth:`assertSequenceEqual(a, b) | sequences | 2.7 | 1119 | <TestCase.assertSequenceEqual>` | | | 1120 +-----------------------------------------+-----------------------------+--------------+ 1121 | :meth:`assertListEqual(a, b) | lists | 2.7 | 1122 | <TestCase.assertListEqual>` | | | 1123 +-----------------------------------------+-----------------------------+--------------+ 1124 | :meth:`assertTupleEqual(a, b) | tuples | 2.7 | 1125 | <TestCase.assertTupleEqual>` | | | 1126 +-----------------------------------------+-----------------------------+--------------+ 1127 | :meth:`assertSetEqual(a, b) | sets or frozensets | 2.7 | 1128 | <TestCase.assertSetEqual>` | | | 1129 +-----------------------------------------+-----------------------------+--------------+ 1130 | :meth:`assertDictEqual(a, b) | dicts | 2.7 | 1131 | <TestCase.assertDictEqual>` | | | 1132 +-----------------------------------------+-----------------------------+--------------+ 1133 1134 1135 1136 .. method:: assertMultiLineEqual(first, second, msg=None) 1137 1138 Test that the multiline string *first* is equal to the string *second*. 1139 When not equal a diff of the two strings highlighting the differences 1140 will be included in the error message. This method is used by default 1141 when comparing Unicode strings with :meth:`assertEqual`. 1142 1143 .. versionadded:: 2.7 1144 1145 1146 .. method:: assertSequenceEqual(seq1, seq2, msg=None, seq_type=None) 1147 1148 Tests that two sequences are equal. If a *seq_type* is supplied, both 1149 *seq1* and *seq2* must be instances of *seq_type* or a failure will 1150 be raised. If the sequences are different an error message is 1151 constructed that shows the difference between the two. 1152 1153 This method is not called directly by :meth:`assertEqual`, but 1154 it's used to implement :meth:`assertListEqual` and 1155 :meth:`assertTupleEqual`. 1156 1157 .. versionadded:: 2.7 1158 1159 1160 .. method:: assertListEqual(list1, list2, msg=None) 1161 assertTupleEqual(tuple1, tuple2, msg=None) 1162 1163 Tests that two lists or tuples are equal. If not, an error message is 1164 constructed that shows only the differences between the two. An error 1165 is also raised if either of the parameters are of the wrong type. 1166 These methods are used by default when comparing lists or tuples with 1167 :meth:`assertEqual`. 1168 1169 .. versionadded:: 2.7 1170 1171 1172 .. method:: assertSetEqual(set1, set2, msg=None) 1173 1174 Tests that two sets are equal. If not, an error message is constructed 1175 that lists the differences between the sets. This method is used by 1176 default when comparing sets or frozensets with :meth:`assertEqual`. 1177 1178 Fails if either of *set1* or *set2* does not have a :meth:`set.difference` 1179 method. 1180 1181 .. versionadded:: 2.7 1182 1183 1184 .. method:: assertDictEqual(expected, actual, msg=None) 1185 1186 Test that two dictionaries are equal. If not, an error message is 1187 constructed that shows the differences in the dictionaries. This 1188 method will be used by default to compare dictionaries in 1189 calls to :meth:`assertEqual`. 1190 1191 .. versionadded:: 2.7 1192 1193 1194 1195 .. _other-methods-and-attrs: 1196 1197 Finally the :class:`TestCase` provides the following methods and attributes: 1198 1199 1200 .. method:: fail(msg=None) 1201 1202 Signals a test failure unconditionally, with *msg* or ``None`` for 1203 the error message. 1204 1205 1206 .. attribute:: failureException 1207 1208 This class attribute gives the exception raised by the test method. If a 1209 test framework needs to use a specialized exception, possibly to carry 1210 additional information, it must subclass this exception in order to "play 1211 fair" with the framework. The initial value of this attribute is 1212 :exc:`AssertionError`. 1213 1214 1215 .. attribute:: longMessage 1216 1217 If set to ``True`` then any explicit failure message you pass in to the 1218 :ref:`assert methods <assert-methods>` will be appended to the end of the 1219 normal failure message. The normal messages contain useful information 1220 about the objects involved, for example the message from assertEqual 1221 shows you the repr of the two unequal objects. Setting this attribute 1222 to ``True`` allows you to have a custom error message in addition to the 1223 normal one. 1224 1225 This attribute defaults to ``False``, meaning that a custom message passed 1226 to an assert method will silence the normal message. 1227 1228 The class setting can be overridden in individual tests by assigning an 1229 instance attribute to ``True`` or ``False`` before calling the assert methods. 1230 1231 .. versionadded:: 2.7 1232 1233 1234 .. attribute:: maxDiff 1235 1236 This attribute controls the maximum length of diffs output by assert 1237 methods that report diffs on failure. It defaults to 80*8 characters. 1238 Assert methods affected by this attribute are 1239 :meth:`assertSequenceEqual` (including all the sequence comparison 1240 methods that delegate to it), :meth:`assertDictEqual` and 1241 :meth:`assertMultiLineEqual`. 1242 1243 Setting ``maxDiff`` to ``None`` means that there is no maximum length of 1244 diffs. 1245 1246 .. versionadded:: 2.7 1247 1248 1249 Testing frameworks can use the following methods to collect information on 1250 the test: 1251 1252 1253 .. method:: countTestCases() 1254 1255 Return the number of tests represented by this test object. For 1256 :class:`TestCase` instances, this will always be ``1``. 1257 1258 1259 .. method:: defaultTestResult() 1260 1261 Return an instance of the test result class that should be used for this 1262 test case class (if no other result instance is provided to the 1263 :meth:`run` method). 1264 1265 For :class:`TestCase` instances, this will always be an instance of 1266 :class:`TestResult`; subclasses of :class:`TestCase` should override this 1267 as necessary. 1268 1269 1270 .. method:: id() 1271 1272 Return a string identifying the specific test case. This is usually the 1273 full name of the test method, including the module and class name. 1274 1275 1276 .. method:: shortDescription() 1277 1278 Returns a description of the test, or ``None`` if no description 1279 has been provided. The default implementation of this method 1280 returns the first line of the test method's docstring, if available, 1281 or :const:`None`. 1282 1283 1284 1285 .. method:: addCleanup(function, *args, **kwargs) 1286 1287 Add a function to be called after :meth:`tearDown` to cleanup resources 1288 used during the test. Functions will be called in reverse order to the 1289 order they are added (LIFO). They are called with any arguments and 1290 keyword arguments passed into :meth:`addCleanup` when they are 1291 added. 1292 1293 If :meth:`setUp` fails, meaning that :meth:`tearDown` is not called, 1294 then any cleanup functions added will still be called. 1295 1296 .. versionadded:: 2.7 1297 1298 1299 .. method:: doCleanups() 1300 1301 This method is called unconditionally after :meth:`tearDown`, or 1302 after :meth:`setUp` if :meth:`setUp` raises an exception. 1303 1304 It is responsible for calling all the cleanup functions added by 1305 :meth:`addCleanup`. If you need cleanup functions to be called 1306 *prior* to :meth:`tearDown` then you can call :meth:`doCleanups` 1307 yourself. 1308 1309 :meth:`doCleanups` pops methods off the stack of cleanup 1310 functions one at a time, so it can be called at any time. 1311 1312 .. versionadded:: 2.7 1313 1314 1315 .. class:: FunctionTestCase(testFunc, setUp=None, tearDown=None, description=None) 1316 1317 This class implements the portion of the :class:`TestCase` interface which 1318 allows the test runner to drive the test, but does not provide the methods 1319 which test code can use to check and report errors. This is used to create 1320 test cases using legacy test code, allowing it to be integrated into a 1321 :mod:`unittest`-based test framework. 1322 1323 1324 Deprecated aliases 1325 ################## 1326 1327 For historical reasons, some of the :class:`TestCase` methods had one or more 1328 aliases that are now deprecated. The following table lists the correct names 1329 along with their deprecated aliases: 1330 1331 ============================== =============================== 1332 Method Name Deprecated alias(es) 1333 ============================== =============================== 1334 :meth:`.assertEqual` failUnlessEqual, assertEquals 1335 :meth:`.assertNotEqual` failIfEqual 1336 :meth:`.assertTrue` failUnless, assert\_ 1337 :meth:`.assertFalse` failIf 1338 :meth:`.assertRaises` failUnlessRaises 1339 :meth:`.assertAlmostEqual` failUnlessAlmostEqual 1340 :meth:`.assertNotAlmostEqual` failIfAlmostEqual 1341 ============================== =============================== 1342 1343 .. deprecated:: 2.7 1344 the aliases listed in the second column 1345 1346 1347 1348 .. _testsuite-objects: 1349 1350 Grouping tests 1351 ~~~~~~~~~~~~~~ 1352 1353 .. class:: TestSuite(tests=()) 1354 1355 This class represents an aggregation of individual test cases and test suites. 1356 The class presents the interface needed by the test runner to allow it to be run 1357 as any other test case. Running a :class:`TestSuite` instance is the same as 1358 iterating over the suite, running each test individually. 1359 1360 If *tests* is given, it must be an iterable of individual test cases or other 1361 test suites that will be used to build the suite initially. Additional methods 1362 are provided to add test cases and suites to the collection later on. 1363 1364 :class:`TestSuite` objects behave much like :class:`TestCase` objects, except 1365 they do not actually implement a test. Instead, they are used to aggregate 1366 tests into groups of tests that should be run together. Some additional 1367 methods are available to add tests to :class:`TestSuite` instances: 1368 1369 1370 .. method:: TestSuite.addTest(test) 1371 1372 Add a :class:`TestCase` or :class:`TestSuite` to the suite. 1373 1374 1375 .. method:: TestSuite.addTests(tests) 1376 1377 Add all the tests from an iterable of :class:`TestCase` and :class:`TestSuite` 1378 instances to this test suite. 1379 1380 This is equivalent to iterating over *tests*, calling :meth:`addTest` for 1381 each element. 1382 1383 :class:`TestSuite` shares the following methods with :class:`TestCase`: 1384 1385 1386 .. method:: run(result) 1387 1388 Run the tests associated with this suite, collecting the result into the 1389 test result object passed as *result*. Note that unlike 1390 :meth:`TestCase.run`, :meth:`TestSuite.run` requires the result object to 1391 be passed in. 1392 1393 1394 .. method:: debug() 1395 1396 Run the tests associated with this suite without collecting the 1397 result. This allows exceptions raised by the test to be propagated to the 1398 caller and can be used to support running tests under a debugger. 1399 1400 1401 .. method:: countTestCases() 1402 1403 Return the number of tests represented by this test object, including all 1404 individual tests and sub-suites. 1405 1406 1407 .. method:: __iter__() 1408 1409 Tests grouped by a :class:`TestSuite` are always accessed by iteration. 1410 Subclasses can lazily provide tests by overriding :meth:`__iter__`. Note 1411 that this method maybe called several times on a single suite 1412 (for example when counting tests or comparing for equality) 1413 so the tests returned must be the same for repeated iterations. 1414 1415 .. versionchanged:: 2.7 1416 In earlier versions the :class:`TestSuite` accessed tests directly rather 1417 than through iteration, so overriding :meth:`__iter__` wasn't sufficient 1418 for providing tests. 1419 1420 In the typical usage of a :class:`TestSuite` object, the :meth:`run` method 1421 is invoked by a :class:`TestRunner` rather than by the end-user test harness. 1422 1423 1424 Loading and running tests 1425 ~~~~~~~~~~~~~~~~~~~~~~~~~ 1426 1427 .. class:: TestLoader() 1428 1429 The :class:`TestLoader` class is used to create test suites from classes and 1430 modules. Normally, there is no need to create an instance of this class; the 1431 :mod:`unittest` module provides an instance that can be shared as 1432 :data:`unittest.defaultTestLoader`. Using a subclass or instance, however, 1433 allows customization of some configurable properties. 1434 1435 :class:`TestLoader` objects have the following methods: 1436 1437 1438 .. method:: loadTestsFromTestCase(testCaseClass) 1439 1440 Return a suite of all test cases contained in the :class:`TestCase`\ -derived 1441 :class:`testCaseClass`. 1442 1443 1444 .. method:: loadTestsFromModule(module) 1445 1446 Return a suite of all test cases contained in the given module. This 1447 method searches *module* for classes derived from :class:`TestCase` and 1448 creates an instance of the class for each test method defined for the 1449 class. 1450 1451 .. note:: 1452 1453 While using a hierarchy of :class:`TestCase`\ -derived classes can be 1454 convenient in sharing fixtures and helper functions, defining test 1455 methods on base classes that are not intended to be instantiated 1456 directly does not play well with this method. Doing so, however, can 1457 be useful when the fixtures are different and defined in subclasses. 1458 1459 If a module provides a ``load_tests`` function it will be called to 1460 load the tests. This allows modules to customize test loading. 1461 This is the `load_tests protocol`_. 1462 1463 .. versionchanged:: 2.7 1464 Support for ``load_tests`` added. 1465 1466 1467 .. method:: loadTestsFromName(name, module=None) 1468 1469 Return a suite of all test cases given a string specifier. 1470 1471 The specifier *name* is a "dotted name" that may resolve either to a 1472 module, a test case class, a test method within a test case class, a 1473 :class:`TestSuite` instance, or a callable object which returns a 1474 :class:`TestCase` or :class:`TestSuite` instance. These checks are 1475 applied in the order listed here; that is, a method on a possible test 1476 case class will be picked up as "a test method within a test case class", 1477 rather than "a callable object". 1478 1479 For example, if you have a module :mod:`SampleTests` containing a 1480 :class:`TestCase`\ -derived class :class:`SampleTestCase` with three test 1481 methods (:meth:`test_one`, :meth:`test_two`, and :meth:`test_three`), the 1482 specifier ``'SampleTests.SampleTestCase'`` would cause this method to 1483 return a suite which will run all three test methods. Using the specifier 1484 ``'SampleTests.SampleTestCase.test_two'`` would cause it to return a test 1485 suite which will run only the :meth:`test_two` test method. The specifier 1486 can refer to modules and packages which have not been imported; they will 1487 be imported as a side-effect. 1488 1489 The method optionally resolves *name* relative to the given *module*. 1490 1491 1492 .. method:: loadTestsFromNames(names, module=None) 1493 1494 Similar to :meth:`loadTestsFromName`, but takes a sequence of names rather 1495 than a single name. The return value is a test suite which supports all 1496 the tests defined for each name. 1497 1498 1499 .. method:: getTestCaseNames(testCaseClass) 1500 1501 Return a sorted sequence of method names found within *testCaseClass*; 1502 this should be a subclass of :class:`TestCase`. 1503 1504 1505 .. method:: discover(start_dir, pattern='test*.py', top_level_dir=None) 1506 1507 Find all the test modules by recursing into subdirectories from the 1508 specified start directory, and return a TestSuite object containing them. 1509 Only test files that match *pattern* will be loaded. (Using shell style 1510 pattern matching.) Only module names that are importable (i.e. are valid 1511 Python identifiers) will be loaded. 1512 1513 All test modules must be importable from the top level of the project. If 1514 the start directory is not the top level directory then the top level 1515 directory must be specified separately. 1516 1517 If importing a module fails, for example due to a syntax error, then this 1518 will be recorded as a single error and discovery will continue. 1519 1520 If a test package name (directory with :file:`__init__.py`) matches the 1521 pattern then the package will be checked for a ``load_tests`` 1522 function. If this exists then it will be called with *loader*, *tests*, 1523 *pattern*. 1524 1525 If load_tests exists then discovery does *not* recurse into the package, 1526 ``load_tests`` is responsible for loading all tests in the package. 1527 1528 The pattern is deliberately not stored as a loader attribute so that 1529 packages can continue discovery themselves. *top_level_dir* is stored so 1530 ``load_tests`` does not need to pass this argument in to 1531 ``loader.discover()``. 1532 1533 *start_dir* can be a dotted module name as well as a directory. 1534 1535 .. versionadded:: 2.7 1536 1537 The following attributes of a :class:`TestLoader` can be configured either by 1538 subclassing or assignment on an instance: 1539 1540 1541 .. attribute:: testMethodPrefix 1542 1543 String giving the prefix of method names which will be interpreted as test 1544 methods. The default value is ``'test'``. 1545 1546 This affects :meth:`getTestCaseNames` and all the :meth:`loadTestsFrom\*` 1547 methods. 1548 1549 1550 .. attribute:: sortTestMethodsUsing 1551 1552 Function to be used to compare method names when sorting them in 1553 :meth:`getTestCaseNames` and all the :meth:`loadTestsFrom\*` methods. The 1554 default value is the built-in :func:`cmp` function; the attribute can also 1555 be set to :const:`None` to disable the sort. 1556 1557 1558 .. attribute:: suiteClass 1559 1560 Callable object that constructs a test suite from a list of tests. No 1561 methods on the resulting object are needed. The default value is the 1562 :class:`TestSuite` class. 1563 1564 This affects all the :meth:`loadTestsFrom\*` methods. 1565 1566 1567 .. class:: TestResult 1568 1569 This class is used to compile information about which tests have succeeded 1570 and which have failed. 1571 1572 A :class:`TestResult` object stores the results of a set of tests. The 1573 :class:`TestCase` and :class:`TestSuite` classes ensure that results are 1574 properly recorded; test authors do not need to worry about recording the 1575 outcome of tests. 1576 1577 Testing frameworks built on top of :mod:`unittest` may want access to the 1578 :class:`TestResult` object generated by running a set of tests for reporting 1579 purposes; a :class:`TestResult` instance is returned by the 1580 :meth:`TestRunner.run` method for this purpose. 1581 1582 :class:`TestResult` instances have the following attributes that will be of 1583 interest when inspecting the results of running a set of tests: 1584 1585 1586 .. attribute:: errors 1587 1588 A list containing 2-tuples of :class:`TestCase` instances and strings 1589 holding formatted tracebacks. Each tuple represents a test which raised an 1590 unexpected exception. 1591 1592 .. versionchanged:: 2.2 1593 Contains formatted tracebacks instead of :func:`sys.exc_info` results. 1594 1595 1596 .. attribute:: failures 1597 1598 A list containing 2-tuples of :class:`TestCase` instances and strings 1599 holding formatted tracebacks. Each tuple represents a test where a failure 1600 was explicitly signalled using the :meth:`TestCase.assert\*` methods. 1601 1602 .. versionchanged:: 2.2 1603 Contains formatted tracebacks instead of :func:`sys.exc_info` results. 1604 1605 .. attribute:: skipped 1606 1607 A list containing 2-tuples of :class:`TestCase` instances and strings 1608 holding the reason for skipping the test. 1609 1610 .. versionadded:: 2.7 1611 1612 .. attribute:: expectedFailures 1613 1614 A list containing 2-tuples of :class:`TestCase` instances and strings 1615 holding formatted tracebacks. Each tuple represents an expected failure 1616 of the test case. 1617 1618 .. attribute:: unexpectedSuccesses 1619 1620 A list containing :class:`TestCase` instances that were marked as expected 1621 failures, but succeeded. 1622 1623 .. attribute:: shouldStop 1624 1625 Set to ``True`` when the execution of tests should stop by :meth:`stop`. 1626 1627 1628 .. attribute:: testsRun 1629 1630 The total number of tests run so far. 1631 1632 1633 .. attribute:: buffer 1634 1635 If set to true, ``sys.stdout`` and ``sys.stderr`` will be buffered in between 1636 :meth:`startTest` and :meth:`stopTest` being called. Collected output will 1637 only be echoed onto the real ``sys.stdout`` and ``sys.stderr`` if the test 1638 fails or errors. Any output is also attached to the failure / error message. 1639 1640 .. versionadded:: 2.7 1641 1642 1643 .. attribute:: failfast 1644 1645 If set to true :meth:`stop` will be called on the first failure or error, 1646 halting the test run. 1647 1648 .. versionadded:: 2.7 1649 1650 1651 .. method:: wasSuccessful() 1652 1653 Return ``True`` if all tests run so far have passed, otherwise returns 1654 ``False``. 1655 1656 1657 .. method:: stop() 1658 1659 This method can be called to signal that the set of tests being run should 1660 be aborted by setting the :attr:`shouldStop` attribute to ``True``. 1661 :class:`TestRunner` objects should respect this flag and return without 1662 running any additional tests. 1663 1664 For example, this feature is used by the :class:`TextTestRunner` class to 1665 stop the test framework when the user signals an interrupt from the 1666 keyboard. Interactive tools which provide :class:`TestRunner` 1667 implementations can use this in a similar manner. 1668 1669 The following methods of the :class:`TestResult` class are used to maintain 1670 the internal data structures, and may be extended in subclasses to support 1671 additional reporting requirements. This is particularly useful in building 1672 tools which support interactive reporting while tests are being run. 1673 1674 1675 .. method:: startTest(test) 1676 1677 Called when the test case *test* is about to be run. 1678 1679 .. method:: stopTest(test) 1680 1681 Called after the test case *test* has been executed, regardless of the 1682 outcome. 1683 1684 .. method:: startTestRun() 1685 1686 Called once before any tests are executed. 1687 1688 .. versionadded:: 2.7 1689 1690 1691 .. method:: stopTestRun() 1692 1693 Called once after all tests are executed. 1694 1695 .. versionadded:: 2.7 1696 1697 1698 .. method:: addError(test, err) 1699 1700 Called when the test case *test* raises an unexpected exception. *err* is a 1701 tuple of the form returned by :func:`sys.exc_info`: ``(type, value, 1702 traceback)``. 1703 1704 The default implementation appends a tuple ``(test, formatted_err)`` to 1705 the instance's :attr:`errors` attribute, where *formatted_err* is a 1706 formatted traceback derived from *err*. 1707 1708 1709 .. method:: addFailure(test, err) 1710 1711 Called when the test case *test* signals a failure. *err* is a tuple of 1712 the form returned by :func:`sys.exc_info`: ``(type, value, traceback)``. 1713 1714 The default implementation appends a tuple ``(test, formatted_err)`` to 1715 the instance's :attr:`failures` attribute, where *formatted_err* is a 1716 formatted traceback derived from *err*. 1717 1718 1719 .. method:: addSuccess(test) 1720 1721 Called when the test case *test* succeeds. 1722 1723 The default implementation does nothing. 1724 1725 1726 .. method:: addSkip(test, reason) 1727 1728 Called when the test case *test* is skipped. *reason* is the reason the 1729 test gave for skipping. 1730 1731 The default implementation appends a tuple ``(test, reason)`` to the 1732 instance's :attr:`skipped` attribute. 1733 1734 1735 .. method:: addExpectedFailure(test, err) 1736 1737 Called when the test case *test* fails, but was marked with the 1738 :func:`expectedFailure` decorator. 1739 1740 The default implementation appends a tuple ``(test, formatted_err)`` to 1741 the instance's :attr:`expectedFailures` attribute, where *formatted_err* 1742 is a formatted traceback derived from *err*. 1743 1744 1745 .. method:: addUnexpectedSuccess(test) 1746 1747 Called when the test case *test* was marked with the 1748 :func:`expectedFailure` decorator, but succeeded. 1749 1750 The default implementation appends the test to the instance's 1751 :attr:`unexpectedSuccesses` attribute. 1752 1753 .. class:: TextTestResult(stream, descriptions, verbosity) 1754 1755 A concrete implementation of :class:`TestResult` used by the 1756 :class:`TextTestRunner`. 1757 1758 .. versionadded:: 2.7 1759 This class was previously named ``_TextTestResult``. The old name still 1760 exists as an alias but is deprecated. 1761 1762 .. data:: defaultTestLoader 1763 1764 Instance of the :class:`TestLoader` class intended to be shared. If no 1765 customization of the :class:`TestLoader` is needed, this instance can be used 1766 instead of repeatedly creating new instances. 1767 1768 1769 .. class:: TextTestRunner(stream=sys.stderr, descriptions=True, verbosity=1, \ 1770 failfast=False, buffer=False, resultclass=None) 1771 1772 A basic test runner implementation which prints results on standard error. It 1773 has a few configurable parameters, but is essentially very simple. Graphical 1774 applications which run test suites should provide alternate implementations. 1775 1776 .. method:: _makeResult() 1777 1778 This method returns the instance of ``TestResult`` used by :meth:`run`. 1779 It is not intended to be called directly, but can be overridden in 1780 subclasses to provide a custom ``TestResult``. 1781 1782 ``_makeResult()`` instantiates the class or callable passed in the 1783 ``TextTestRunner`` constructor as the ``resultclass`` argument. It 1784 defaults to :class:`TextTestResult` if no ``resultclass`` is provided. 1785 The result class is instantiated with the following arguments:: 1786 1787 stream, descriptions, verbosity 1788 1789 1790 .. function:: main([module[, defaultTest[, argv[, testRunner[, testLoader[, exit[, verbosity[, failfast[, catchbreak[, buffer]]]]]]]]]]) 1791 1792 A command-line program that loads a set of tests from *module* and runs them; 1793 this is primarily for making test modules conveniently executable. 1794 The simplest use for this function is to include the following line at the 1795 end of a test script:: 1796 1797 if __name__ == '__main__': 1798 unittest.main() 1799 1800 You can run tests with more detailed information by passing in the verbosity 1801 argument:: 1802 1803 if __name__ == '__main__': 1804 unittest.main(verbosity=2) 1805 1806 The *defaultTest* argument is the name of the test to run if no test names 1807 are specified via *argv*. If not specified or ``None`` and no test names are 1808 provided via *argv*, all tests found in *module* are run. 1809 1810 The *argv* argument can be a list of options passed to the program, with the 1811 first element being the program name. If not specified or ``None``, 1812 the values of :data:`sys.argv` are used. 1813 1814 The *testRunner* argument can either be a test runner class or an already 1815 created instance of it. By default ``main`` calls :func:`sys.exit` with 1816 an exit code indicating success or failure of the tests run. 1817 1818 The *testLoader* argument has to be a :class:`TestLoader` instance, 1819 and defaults to :data:`defaultTestLoader`. 1820 1821 ``main`` supports being used from the interactive interpreter by passing in the 1822 argument ``exit=False``. This displays the result on standard output without 1823 calling :func:`sys.exit`:: 1824 1825 >>> from unittest import main 1826 >>> main(module='test_module', exit=False) 1827 1828 The *failfast*, *catchbreak* and *buffer* parameters have the same 1829 effect as the same-name `command-line options`_. 1830 1831 Calling ``main`` actually returns an instance of the ``TestProgram`` class. 1832 This stores the result of the tests run as the ``result`` attribute. 1833 1834 .. versionchanged:: 2.7 1835 The *exit*, *verbosity*, *failfast*, *catchbreak* and *buffer* 1836 parameters were added. 1837 1838 1839 load_tests Protocol 1840 ################### 1841 1842 .. versionadded:: 2.7 1843 1844 Modules or packages can customize how tests are loaded from them during normal 1845 test runs or test discovery by implementing a function called ``load_tests``. 1846 1847 If a test module defines ``load_tests`` it will be called by 1848 :meth:`TestLoader.loadTestsFromModule` with the following arguments:: 1849 1850 load_tests(loader, standard_tests, None) 1851 1852 It should return a :class:`TestSuite`. 1853 1854 *loader* is the instance of :class:`TestLoader` doing the loading. 1855 *standard_tests* are the tests that would be loaded by default from the 1856 module. It is common for test modules to only want to add or remove tests 1857 from the standard set of tests. 1858 The third argument is used when loading packages as part of test discovery. 1859 1860 A typical ``load_tests`` function that loads tests from a specific set of 1861 :class:`TestCase` classes may look like:: 1862 1863 test_cases = (TestCase1, TestCase2, TestCase3) 1864 1865 def load_tests(loader, tests, pattern): 1866 suite = TestSuite() 1867 for test_class in test_cases: 1868 tests = loader.loadTestsFromTestCase(test_class) 1869 suite.addTests(tests) 1870 return suite 1871 1872 If discovery is started, either from the command line or by calling 1873 :meth:`TestLoader.discover`, with a pattern that matches a package 1874 name then the package :file:`__init__.py` will be checked for ``load_tests``. 1875 1876 .. note:: 1877 1878 The default pattern is ``'test*.py'``. This matches all Python files 1879 that start with ``'test'`` but *won't* match any test directories. 1880 1881 A pattern like ``'test*'`` will match test packages as well as 1882 modules. 1883 1884 If the package :file:`__init__.py` defines ``load_tests`` then it will be 1885 called and discovery not continued into the package. ``load_tests`` 1886 is called with the following arguments:: 1887 1888 load_tests(loader, standard_tests, pattern) 1889 1890 This should return a :class:`TestSuite` representing all the tests 1891 from the package. (``standard_tests`` will only contain tests 1892 collected from :file:`__init__.py`.) 1893 1894 Because the pattern is passed into ``load_tests`` the package is free to 1895 continue (and potentially modify) test discovery. A 'do nothing' 1896 ``load_tests`` function for a test package would look like:: 1897 1898 def load_tests(loader, standard_tests, pattern): 1899 # top level directory cached on loader instance 1900 this_dir = os.path.dirname(__file__) 1901 package_tests = loader.discover(start_dir=this_dir, pattern=pattern) 1902 standard_tests.addTests(package_tests) 1903 return standard_tests 1904 1905 1906 Class and Module Fixtures 1907 ------------------------- 1908 1909 Class and module level fixtures are implemented in :class:`TestSuite`. When 1910 the test suite encounters a test from a new class then :meth:`tearDownClass` 1911 from the previous class (if there is one) is called, followed by 1912 :meth:`setUpClass` from the new class. 1913 1914 Similarly if a test is from a different module from the previous test then 1915 ``tearDownModule`` from the previous module is run, followed by 1916 ``setUpModule`` from the new module. 1917 1918 After all the tests have run the final ``tearDownClass`` and 1919 ``tearDownModule`` are run. 1920 1921 Note that shared fixtures do not play well with [potential] features like test 1922 parallelization and they break test isolation. They should be used with care. 1923 1924 The default ordering of tests created by the unittest test loaders is to group 1925 all tests from the same modules and classes together. This will lead to 1926 ``setUpClass`` / ``setUpModule`` (etc) being called exactly once per class and 1927 module. If you randomize the order, so that tests from different modules and 1928 classes are adjacent to each other, then these shared fixture functions may be 1929 called multiple times in a single test run. 1930 1931 Shared fixtures are not intended to work with suites with non-standard 1932 ordering. A ``BaseTestSuite`` still exists for frameworks that don't want to 1933 support shared fixtures. 1934 1935 If there are any exceptions raised during one of the shared fixture functions 1936 the test is reported as an error. Because there is no corresponding test 1937 instance an ``_ErrorHolder`` object (that has the same interface as a 1938 :class:`TestCase`) is created to represent the error. If you are just using 1939 the standard unittest test runner then this detail doesn't matter, but if you 1940 are a framework author it may be relevant. 1941 1942 1943 setUpClass and tearDownClass 1944 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1945 1946 These must be implemented as class methods:: 1947 1948 import unittest 1949 1950 class Test(unittest.TestCase): 1951 @classmethod 1952 def setUpClass(cls): 1953 cls._connection = createExpensiveConnectionObject() 1954 1955 @classmethod 1956 def tearDownClass(cls): 1957 cls._connection.destroy() 1958 1959 If you want the ``setUpClass`` and ``tearDownClass`` on base classes called 1960 then you must call up to them yourself. The implementations in 1961 :class:`TestCase` are empty. 1962 1963 If an exception is raised during a ``setUpClass`` then the tests in the class 1964 are not run and the ``tearDownClass`` is not run. Skipped classes will not 1965 have ``setUpClass`` or ``tearDownClass`` run. If the exception is a 1966 :exc:`SkipTest` exception then the class will be reported as having been skipped 1967 instead of as an error. 1968 1969 1970 setUpModule and tearDownModule 1971 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1972 1973 These should be implemented as functions:: 1974 1975 def setUpModule(): 1976 createConnection() 1977 1978 def tearDownModule(): 1979 closeConnection() 1980 1981 If an exception is raised in a ``setUpModule`` then none of the tests in the 1982 module will be run and the ``tearDownModule`` will not be run. If the exception is a 1983 :exc:`SkipTest` exception then the module will be reported as having been skipped 1984 instead of as an error. 1985 1986 1987 Signal Handling 1988 --------------- 1989 1990 The :option:`-c/--catch <unittest -c>` command-line option to unittest, 1991 along with the ``catchbreak`` parameter to :func:`unittest.main()`, provide 1992 more friendly handling of control-C during a test run. With catch break 1993 behavior enabled control-C will allow the currently running test to complete, 1994 and the test run will then end and report all the results so far. A second 1995 control-c will raise a :exc:`KeyboardInterrupt` in the usual way. 1996 1997 The control-c handling signal handler attempts to remain compatible with code or 1998 tests that install their own :const:`signal.SIGINT` handler. If the ``unittest`` 1999 handler is called but *isn't* the installed :const:`signal.SIGINT` handler, 2000 i.e. it has been replaced by the system under test and delegated to, then it 2001 calls the default handler. This will normally be the expected behavior by code 2002 that replaces an installed handler and delegates to it. For individual tests 2003 that need ``unittest`` control-c handling disabled the :func:`removeHandler` 2004 decorator can be used. 2005 2006 There are a few utility functions for framework authors to enable control-c 2007 handling functionality within test frameworks. 2008 2009 .. function:: installHandler() 2010 2011 Install the control-c handler. When a :const:`signal.SIGINT` is received 2012 (usually in response to the user pressing control-c) all registered results 2013 have :meth:`~TestResult.stop` called. 2014 2015 .. versionadded:: 2.7 2016 2017 .. function:: registerResult(result) 2018 2019 Register a :class:`TestResult` object for control-c handling. Registering a 2020 result stores a weak reference to it, so it doesn't prevent the result from 2021 being garbage collected. 2022 2023 Registering a :class:`TestResult` object has no side-effects if control-c 2024 handling is not enabled, so test frameworks can unconditionally register 2025 all results they create independently of whether or not handling is enabled. 2026 2027 .. versionadded:: 2.7 2028 2029 .. function:: removeResult(result) 2030 2031 Remove a registered result. Once a result has been removed then 2032 :meth:`~TestResult.stop` will no longer be called on that result object in 2033 response to a control-c. 2034 2035 .. versionadded:: 2.7 2036 2037 .. function:: removeHandler(function=None) 2038 2039 When called without arguments this function removes the control-c handler 2040 if it has been installed. This function can also be used as a test decorator 2041 to temporarily remove the handler while the test is being executed:: 2042 2043 @unittest.removeHandler 2044 def test_signal_handling(self): 2045 ... 2046 2047 .. versionadded:: 2.7 2048 2049