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