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