blob: ff096a7acbea6bb2779c21a21c7df082bd750467 [file] [log] [blame]
Georg Brandl8ec7f652007-08-15 14:28:01 +00001:mod:`unittest` --- Unit testing framework
2==========================================
3
4.. module:: unittest
5 :synopsis: Unit testing framework for Python.
6.. moduleauthor:: Steve Purcell <stephen_purcell@yahoo.com>
7.. sectionauthor:: Steve Purcell <stephen_purcell@yahoo.com>
8.. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org>
9.. sectionauthor:: Raymond Hettinger <python@rcn.com>
10
11
12.. versionadded:: 2.1
Benjamin Peterson692428e2009-03-23 21:50:21 +000013
Benjamin Peterson99721e02009-03-23 23:10:14 +000014.. versionchanged:: 2.7
15 Added test :ref:`skipping and expected failures <unittest-skipping>`.
Georg Brandl8ec7f652007-08-15 14:28:01 +000016
17The Python unit testing framework, sometimes referred to as "PyUnit," is a
18Python language version of JUnit, by Kent Beck and Erich Gamma. JUnit is, in
19turn, a Java version of Kent's Smalltalk testing framework. Each is the de
20facto standard unit testing framework for its respective language.
21
22:mod:`unittest` supports test automation, sharing of setup and shutdown code for
23tests, aggregation of tests into collections, and independence of the tests from
24the reporting framework. The :mod:`unittest` module provides classes that make
25it easy to support these qualities for a set of tests.
26
27To achieve this, :mod:`unittest` supports some important concepts:
28
29test fixture
30 A :dfn:`test fixture` represents the preparation needed to perform one or more
31 tests, and any associate cleanup actions. This may involve, for example,
32 creating temporary or proxy databases, directories, or starting a server
33 process.
34
35test case
36 A :dfn:`test case` is the smallest unit of testing. It checks for a specific
37 response to a particular set of inputs. :mod:`unittest` provides a base class,
38 :class:`TestCase`, which may be used to create new test cases.
39
40test suite
41 A :dfn:`test suite` is a collection of test cases, test suites, or both. It is
42 used to aggregate tests that should be executed together.
43
44test runner
45 A :dfn:`test runner` is a component which orchestrates the execution of tests
46 and provides the outcome to the user. The runner may use a graphical interface,
47 a textual interface, or return a special value to indicate the results of
48 executing the tests.
49
50The test case and test fixture concepts are supported through the
51:class:`TestCase` and :class:`FunctionTestCase` classes; the former should be
52used when creating new tests, and the latter can be used when integrating
53existing test code with a :mod:`unittest`\ -driven framework. When building test
Benjamin Peterson99721e02009-03-23 23:10:14 +000054fixtures using :class:`TestCase`, the :meth:`~TestCase.setUp` and
55:meth:`~TestCase.tearDown` methods can be overridden to provide initialization
56and cleanup for the fixture. With :class:`FunctionTestCase`, existing functions
57can be passed to the constructor for these purposes. When the test is run, the
58fixture initialization is run first; if it succeeds, the cleanup method is run
59after the test has been executed, regardless of the outcome of the test. Each
60instance of the :class:`TestCase` will only be used to run a single test method,
61so a new fixture is created for each test.
Georg Brandl8ec7f652007-08-15 14:28:01 +000062
63Test suites are implemented by the :class:`TestSuite` class. This class allows
64individual tests and test suites to be aggregated; when the suite is executed,
Benjamin Peterson176a56c2009-05-25 00:48:58 +000065all tests added directly to the suite and in "child" test suites are run.
Georg Brandl8ec7f652007-08-15 14:28:01 +000066
Benjamin Peterson99721e02009-03-23 23:10:14 +000067A test runner is an object that provides a single method,
68:meth:`~TestRunner.run`, which accepts a :class:`TestCase` or :class:`TestSuite`
69object as a parameter, and returns a result object. The class
70:class:`TestResult` is provided for use as the result object. :mod:`unittest`
71provides the :class:`TextTestRunner` as an example test runner which reports
72test results on the standard error stream by default. Alternate runners can be
73implemented for other environments (such as graphical environments) without any
74need to derive from a specific class.
Georg Brandl8ec7f652007-08-15 14:28:01 +000075
76
77.. seealso::
78
79 Module :mod:`doctest`
80 Another test-support module with a very different flavor.
81
82 `Simple Smalltalk Testing: With Patterns <http://www.XProgramming.com/testfram.htm>`_
83 Kent Beck's original paper on testing frameworks using the pattern shared by
84 :mod:`unittest`.
85
Raymond Hettinger21b617b2009-03-24 00:17:11 +000086 `Nose <http://code.google.com/p/python-nose/>`_ and `py.test <http://pytest.org>`_
87 Third-party unittest frameworks with a lighter-weight syntax
88 for writing tests. For example, ``assert func(10) == 42``.
89
90 `python-mock <http://python-mock.sourceforge.net/>`_ and `minimock <http://blog.ianbicking.org/minimock.html>`_
91 Tools for creating mock test objects (objects simulating external resources).
Georg Brandl8ec7f652007-08-15 14:28:01 +000092
Michael Foordb4a81c82009-05-29 20:33:46 +000093
Michael Foordb4a81c82009-05-29 20:33:46 +000094
Michael Foord5d31e052009-05-11 17:59:43 +000095
Georg Brandl8ec7f652007-08-15 14:28:01 +000096.. _unittest-minimal-example:
97
98Basic example
99-------------
100
101The :mod:`unittest` module provides a rich set of tools for constructing and
102running tests. This section demonstrates that a small subset of the tools
103suffice to meet the needs of most users.
104
105Here is a short script to test three functions from the :mod:`random` module::
106
107 import random
108 import unittest
109
110 class TestSequenceFunctions(unittest.TestCase):
111
112 def setUp(self):
113 self.seq = range(10)
114
Benjamin Peterson99721e02009-03-23 23:10:14 +0000115 def test_shuffle(self):
Georg Brandl8ec7f652007-08-15 14:28:01 +0000116 # make sure the shuffled sequence does not lose any elements
117 random.shuffle(self.seq)
118 self.seq.sort()
119 self.assertEqual(self.seq, range(10))
120
Benjamin Peterson99721e02009-03-23 23:10:14 +0000121 def test_choice(self):
Georg Brandl8ec7f652007-08-15 14:28:01 +0000122 element = random.choice(self.seq)
123 self.assert_(element in self.seq)
124
Benjamin Peterson99721e02009-03-23 23:10:14 +0000125 def test_sample(self):
Georg Brandl8ec7f652007-08-15 14:28:01 +0000126 self.assertRaises(ValueError, random.sample, self.seq, 20)
127 for element in random.sample(self.seq, 5):
128 self.assert_(element in self.seq)
129
130 if __name__ == '__main__':
131 unittest.main()
132
Benjamin Peterson99721e02009-03-23 23:10:14 +0000133A testcase is created by subclassing :class:`unittest.TestCase`. The three
Georg Brandl8ec7f652007-08-15 14:28:01 +0000134individual tests are defined with methods whose names start with the letters
135``test``. This naming convention informs the test runner about which methods
136represent tests.
137
Benjamin Peterson99721e02009-03-23 23:10:14 +0000138The crux of each test is a call to :meth:`~TestCase.assertEqual` to check for an
139expected result; :meth:`~TestCase.assert_` to verify a condition; or
140:meth:`~TestCase.assertRaises` to verify that an expected exception gets raised.
141These methods are used instead of the :keyword:`assert` statement so the test
142runner can accumulate all test results and produce a report.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000143
Benjamin Peterson99721e02009-03-23 23:10:14 +0000144When a :meth:`~TestCase.setUp` method is defined, the test runner will run that
145method prior to each test. Likewise, if a :meth:`~TestCase.tearDown` method is
146defined, the test runner will invoke that method after each test. In the
147example, :meth:`~TestCase.setUp` was used to create a fresh sequence for each
148test.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000149
150The final block shows a simple way to run the tests. :func:`unittest.main`
151provides a command line interface to the test script. When run from the command
152line, the above script produces an output that looks like this::
153
154 ...
155 ----------------------------------------------------------------------
156 Ran 3 tests in 0.000s
157
158 OK
159
160Instead of :func:`unittest.main`, there are other ways to run the tests with a
161finer level of control, less terse output, and no requirement to be run from the
162command line. For example, the last two lines may be replaced with::
163
164 suite = unittest.TestLoader().loadTestsFromTestCase(TestSequenceFunctions)
165 unittest.TextTestRunner(verbosity=2).run(suite)
166
167Running the revised script from the interpreter or another script produces the
168following output::
169
170 testchoice (__main__.TestSequenceFunctions) ... ok
171 testsample (__main__.TestSequenceFunctions) ... ok
172 testshuffle (__main__.TestSequenceFunctions) ... ok
173
174 ----------------------------------------------------------------------
175 Ran 3 tests in 0.110s
176
177 OK
178
179The above examples show the most commonly used :mod:`unittest` features which
180are sufficient to meet many everyday testing needs. The remainder of the
181documentation explores the full feature set from first principles.
182
Raymond Hettingerb09f1982009-05-29 21:20:41 +0000183
184.. _unittest-command-line-interface:
185
186Command Line Interface
187----------------------
188
189The unittest module can be used from the command line to run tests from
190modules, classes or even individual test methods::
191
192 python -m unittest test_module1 test_module2
193 python -m unittest test_module.TestClass
194 python -m unittest test_module.TestClass.test_method
195
196You can pass in a list with any combination of module names, and fully
197qualified class or method names.
198
199You can run tests with more detail (higher verbosity) by passing in the -v flag::
200
201 python-m unittest -v test_module
202
203For a list of all the command line options::
204
205 python -m unittest -h
206
207.. versionchanged:: 2.7
208 In earlier versions it was only possible to run individual test methods and
209 not modules or classes.
210
211The command line can also be used for test discovery, for running all of the
212tests in a project or just a subset.
213
214
215.. _unittest-test-discovery:
216
217Test Discovery
218--------------
219
220.. versionadded:: 2.7
221
222Unittest supports simple test discovery. For a project's tests to be
223compatible with test discovery they must all be importable from the top level
224directory of the project (in other words, they must all be in Python packages).
225
226Test discovery is implemented in :meth:`TestLoader.discover`, but can also be
227used from the command line. The basic command line usage is::
228
229 cd project_directory
230 python -m unittest discover
231
232The ``discover`` sub-command has the following options:
233
234 -v, --verbose Verbose output
235 -s directory Directory to start discovery ('.' default)
236 -p pattern Pattern to match test files ('test*.py' default)
237 -t directory Top level directory of project (default to
238 start directory)
239
240The -s, -p, & -t options can be passsed in as positional arguments. The
241following two command lines are equivalent::
242
243 python -m unittest -s project_directory -p '*_test.py'
244 python -m unittest project_directory '*_test.py'
245
246Test modules and packages can customize test loading and discovery by through
247the `load_tests protocol`_.
248
249
Georg Brandl8ec7f652007-08-15 14:28:01 +0000250.. _organizing-tests:
251
252Organizing test code
253--------------------
254
255The basic building blocks of unit testing are :dfn:`test cases` --- single
256scenarios that must be set up and checked for correctness. In :mod:`unittest`,
257test cases are represented by instances of :mod:`unittest`'s :class:`TestCase`
258class. To make your own test cases you must write subclasses of
259:class:`TestCase`, or use :class:`FunctionTestCase`.
260
261An instance of a :class:`TestCase`\ -derived class is an object that can
262completely run a single test method, together with optional set-up and tidy-up
263code.
264
265The testing code of a :class:`TestCase` instance should be entirely self
266contained, such that it can be run either in isolation or in arbitrary
267combination with any number of other test cases.
268
Benjamin Peterson99721e02009-03-23 23:10:14 +0000269The simplest :class:`TestCase` subclass will simply override the
270:meth:`~TestCase.runTest` method in order to perform specific testing code::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000271
272 import unittest
273
274 class DefaultWidgetSizeTestCase(unittest.TestCase):
275 def runTest(self):
276 widget = Widget('The widget')
277 self.assertEqual(widget.size(), (50, 50), 'incorrect default size')
278
Gregory P. Smith28399852009-03-31 16:54:10 +0000279Note that in order to test something, we use the one of the :meth:`assert\*`
280methods provided by the :class:`TestCase` base class. If the
Georg Brandl8ec7f652007-08-15 14:28:01 +0000281test fails, an exception will be raised, and :mod:`unittest` will identify the
282test case as a :dfn:`failure`. Any other exceptions will be treated as
283:dfn:`errors`. This helps you identify where the problem is: :dfn:`failures` are
284caused by incorrect results - a 5 where you expected a 6. :dfn:`Errors` are
285caused by incorrect code - e.g., a :exc:`TypeError` caused by an incorrect
286function call.
287
288The way to run a test case will be described later. For now, note that to
289construct an instance of such a test case, we call its constructor without
290arguments::
291
292 testCase = DefaultWidgetSizeTestCase()
293
294Now, such test cases can be numerous, and their set-up can be repetitive. In
295the above case, constructing a :class:`Widget` in each of 100 Widget test case
296subclasses would mean unsightly duplication.
297
298Luckily, we can factor out such set-up code by implementing a method called
Benjamin Peterson99721e02009-03-23 23:10:14 +0000299:meth:`~TestCase.setUp`, which the testing framework will automatically call for
300us when we run the test::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000301
302 import unittest
303
304 class SimpleWidgetTestCase(unittest.TestCase):
305 def setUp(self):
306 self.widget = Widget('The widget')
307
308 class DefaultWidgetSizeTestCase(SimpleWidgetTestCase):
309 def runTest(self):
Gregory P. Smith28399852009-03-31 16:54:10 +0000310 self.assertTrue(self.widget.size() == (50,50),
Georg Brandl8ec7f652007-08-15 14:28:01 +0000311 'incorrect default size')
312
313 class WidgetResizeTestCase(SimpleWidgetTestCase):
314 def runTest(self):
315 self.widget.resize(100,150)
Gregory P. Smith28399852009-03-31 16:54:10 +0000316 self.assertTrue(self.widget.size() == (100,150),
Georg Brandl8ec7f652007-08-15 14:28:01 +0000317 'wrong size after resize')
318
Benjamin Peterson99721e02009-03-23 23:10:14 +0000319If the :meth:`~TestCase.setUp` method raises an exception while the test is
320running, the framework will consider the test to have suffered an error, and the
321:meth:`~TestCase.runTest` method will not be executed.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000322
Benjamin Peterson99721e02009-03-23 23:10:14 +0000323Similarly, we can provide a :meth:`~TestCase.tearDown` method that tidies up
324after the :meth:`~TestCase.runTest` method has been run::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000325
326 import unittest
327
328 class SimpleWidgetTestCase(unittest.TestCase):
329 def setUp(self):
330 self.widget = Widget('The widget')
331
332 def tearDown(self):
333 self.widget.dispose()
334 self.widget = None
335
Benjamin Peterson99721e02009-03-23 23:10:14 +0000336If :meth:`~TestCase.setUp` succeeded, the :meth:`~TestCase.tearDown` method will
337be run whether :meth:`~TestCase.runTest` succeeded or not.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000338
339Such a working environment for the testing code is called a :dfn:`fixture`.
340
341Often, many small test cases will use the same fixture. In this case, we would
342end up subclassing :class:`SimpleWidgetTestCase` into many small one-method
343classes such as :class:`DefaultWidgetSizeTestCase`. This is time-consuming and
Georg Brandl8ec7f652007-08-15 14:28:01 +0000344discouraging, so in the same vein as JUnit, :mod:`unittest` provides a simpler
345mechanism::
346
347 import unittest
348
349 class WidgetTestCase(unittest.TestCase):
350 def setUp(self):
351 self.widget = Widget('The widget')
352
353 def tearDown(self):
354 self.widget.dispose()
355 self.widget = None
356
357 def testDefaultSize(self):
Gregory P. Smith28399852009-03-31 16:54:10 +0000358 self.assertTrue(self.widget.size() == (50,50),
Georg Brandl8ec7f652007-08-15 14:28:01 +0000359 'incorrect default size')
360
361 def testResize(self):
362 self.widget.resize(100,150)
Gregory P. Smith28399852009-03-31 16:54:10 +0000363 self.assertTrue(self.widget.size() == (100,150),
Georg Brandl8ec7f652007-08-15 14:28:01 +0000364 'wrong size after resize')
365
Benjamin Peterson99721e02009-03-23 23:10:14 +0000366Here we have not provided a :meth:`~TestCase.runTest` method, but have instead
367provided two different test methods. Class instances will now each run one of
368the :meth:`test\*` methods, with ``self.widget`` created and destroyed
369separately for each instance. When creating an instance we must specify the
370test method it is to run. We do this by passing the method name in the
371constructor::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000372
373 defaultSizeTestCase = WidgetTestCase('testDefaultSize')
374 resizeTestCase = WidgetTestCase('testResize')
375
376Test case instances are grouped together according to the features they test.
377:mod:`unittest` provides a mechanism for this: the :dfn:`test suite`,
378represented by :mod:`unittest`'s :class:`TestSuite` class::
379
380 widgetTestSuite = unittest.TestSuite()
381 widgetTestSuite.addTest(WidgetTestCase('testDefaultSize'))
382 widgetTestSuite.addTest(WidgetTestCase('testResize'))
383
384For the ease of running tests, as we will see later, it is a good idea to
385provide in each test module a callable object that returns a pre-built test
386suite::
387
388 def suite():
389 suite = unittest.TestSuite()
390 suite.addTest(WidgetTestCase('testDefaultSize'))
391 suite.addTest(WidgetTestCase('testResize'))
392 return suite
393
394or even::
395
396 def suite():
397 tests = ['testDefaultSize', 'testResize']
398
399 return unittest.TestSuite(map(WidgetTestCase, tests))
400
401Since it is a common pattern to create a :class:`TestCase` subclass with many
402similarly named test functions, :mod:`unittest` provides a :class:`TestLoader`
403class that can be used to automate the process of creating a test suite and
404populating it with individual tests. For example, ::
405
406 suite = unittest.TestLoader().loadTestsFromTestCase(WidgetTestCase)
407
408will create a test suite that will run ``WidgetTestCase.testDefaultSize()`` and
409``WidgetTestCase.testResize``. :class:`TestLoader` uses the ``'test'`` method
410name prefix to identify test methods automatically.
411
412Note that the order in which the various test cases will be run is determined by
413sorting the test function names with the built-in :func:`cmp` function.
414
415Often it is desirable to group suites of test cases together, so as to run tests
416for the whole system at once. This is easy, since :class:`TestSuite` instances
417can be added to a :class:`TestSuite` just as :class:`TestCase` instances can be
418added to a :class:`TestSuite`::
419
420 suite1 = module1.TheTestSuite()
421 suite2 = module2.TheTestSuite()
422 alltests = unittest.TestSuite([suite1, suite2])
423
424You can place the definitions of test cases and test suites in the same modules
425as the code they are to test (such as :file:`widget.py`), but there are several
426advantages to placing the test code in a separate module, such as
427:file:`test_widget.py`:
428
429* The test module can be run standalone from the command line.
430
431* The test code can more easily be separated from shipped code.
432
433* There is less temptation to change test code to fit the code it tests without
434 a good reason.
435
436* Test code should be modified much less frequently than the code it tests.
437
438* Tested code can be refactored more easily.
439
440* Tests for modules written in C must be in separate modules anyway, so why not
441 be consistent?
442
443* If the testing strategy changes, there is no need to change the source code.
444
445
446.. _legacy-unit-tests:
447
448Re-using old test code
449----------------------
450
451Some users will find that they have existing test code that they would like to
452run from :mod:`unittest`, without converting every old test function to a
453:class:`TestCase` subclass.
454
455For this reason, :mod:`unittest` provides a :class:`FunctionTestCase` class.
456This subclass of :class:`TestCase` can be used to wrap an existing test
457function. Set-up and tear-down functions can also be provided.
458
459Given the following test function::
460
461 def testSomething():
462 something = makeSomething()
463 assert something.name is not None
464 # ...
465
466one can create an equivalent test case instance as follows::
467
468 testcase = unittest.FunctionTestCase(testSomething)
469
470If there are additional set-up and tear-down methods that should be called as
471part of the test case's operation, they can also be provided like so::
472
473 testcase = unittest.FunctionTestCase(testSomething,
474 setUp=makeSomethingDB,
475 tearDown=deleteSomethingDB)
476
477To make migrating existing test suites easier, :mod:`unittest` supports tests
478raising :exc:`AssertionError` to indicate test failure. However, it is
479recommended that you use the explicit :meth:`TestCase.fail\*` and
480:meth:`TestCase.assert\*` methods instead, as future versions of :mod:`unittest`
481may treat :exc:`AssertionError` differently.
482
483.. note::
484
485 Even though :class:`FunctionTestCase` can be used to quickly convert an existing
486 test base over to a :mod:`unittest`\ -based system, this approach is not
487 recommended. Taking the time to set up proper :class:`TestCase` subclasses will
488 make future test refactorings infinitely easier.
489
Benjamin Peterson99721e02009-03-23 23:10:14 +0000490In some cases, the existing tests may have been written using the :mod:`doctest`
491module. If so, :mod:`doctest` provides a :class:`DocTestSuite` class that can
492automatically build :class:`unittest.TestSuite` instances from the existing
493:mod:`doctest`\ -based tests.
494
Georg Brandl8ec7f652007-08-15 14:28:01 +0000495
Benjamin Peterson692428e2009-03-23 21:50:21 +0000496.. _unittest-skipping:
497
498Skipping tests and expected failures
499------------------------------------
500
501Unittest supports skipping individual test methods and even whole classes of
502tests. In addition, it supports marking a test as a "expected failure," a test
503that is broken and will fail, but shouldn't be counted as a failure on a
504:class:`TestResult`.
505
506Skipping a test is simply a matter of using the :func:`skip` :term:`decorator`
507or one of its conditional variants.
508
509Basic skipping looks like this: ::
510
511 class MyTestCase(unittest.TestCase):
512
513 @unittest.skip("demonstrating skipping")
514 def test_nothing(self):
515 self.fail("shouldn't happen")
516
Benjamin Petersonbe76d4c2009-03-29 03:16:57 +0000517 @unittest.skipIf(mylib.__version__ < (1, 3), "not supported in this library version")
518 def test_format(self):
Benjamin Peterson097aafd2009-03-29 03:39:58 +0000519 # Tests that work for only a certain version of the library.
Benjamin Petersonbe76d4c2009-03-29 03:16:57 +0000520 pass
521
522 @unittest.skipUnless(sys.platform.startswith("win"), "requires Windows")
523 def test_windows_support(self):
524 # windows specific testing code
525 pass
526
Benjamin Peterson692428e2009-03-23 21:50:21 +0000527This is the output of running the example above in verbose mode: ::
528
Benjamin Peterson097aafd2009-03-29 03:39:58 +0000529 test_format (__main__.MyTestCase) ... skipped 'not supported in this library version'
Benjamin Peterson692428e2009-03-23 21:50:21 +0000530 test_nothing (__main__.MyTestCase) ... skipped 'demonstrating skipping'
Benjamin Petersonbe76d4c2009-03-29 03:16:57 +0000531 test_windows_support (__main__.MyTestCase) ... skipped 'requires Windows'
Benjamin Peterson692428e2009-03-23 21:50:21 +0000532
533 ----------------------------------------------------------------------
Benjamin Petersonbe76d4c2009-03-29 03:16:57 +0000534 Ran 3 tests in 0.005s
535
536 OK (skipped=3)
Benjamin Peterson692428e2009-03-23 21:50:21 +0000537
538Classes can be skipped just like methods: ::
539
540 @skip("showing class skipping")
541 class MySkippedTestCase(unittest.TestCase):
542 def test_not_run(self):
543 pass
544
Benjamin Peterson31b78062009-03-23 23:13:36 +0000545:meth:`TestCase.setUp` can also skip the test. This is useful when a resource
546that needs to be set up is not available.
547
Benjamin Peterson692428e2009-03-23 21:50:21 +0000548Expected failures use the :func:`expectedFailure` decorator. ::
549
550 class ExpectedFailureTestCase(unittest.TestCase):
551 @unittest.expectedFailure
552 def test_fail(self):
553 self.assertEqual(1, 0, "broken")
554
555It's easy to roll your own skipping decorators by making a decorator that calls
556:func:`skip` on the test when it wants it to be skipped. This decorator skips
557the test unless the passed object has a certain attribute: ::
558
559 def skipUnlessHasattr(obj, attr):
560 if hasattr(obj, attr):
561 return lambda func: func
562 return unittest.skip("{0!r} doesn't have {1!r}".format(obj, attr))
563
564The following decorators implement test skipping and expected failures:
565
566.. function:: skip(reason)
567
568 Unconditionally skip the decorated test. *reason* should describe why the
569 test is being skipped.
570
571.. function:: skipIf(condition, reason)
572
573 Skip the decorated test if *condition* is true.
574
575.. function:: skipUnless(condition, reason)
576
577 Skip the decoratored test unless *condition* is true.
578
579.. function:: expectedFailure
580
581 Mark the test as an expected failure. If the test fails when run, the test
582 is not counted as a failure.
583
584
Georg Brandl8ec7f652007-08-15 14:28:01 +0000585.. _unittest-contents:
586
587Classes and functions
588---------------------
589
Benjamin Peterson99721e02009-03-23 23:10:14 +0000590This section describes in depth the API of :mod:`unittest`.
591
592
593.. _testcase-objects:
594
595Test cases
596~~~~~~~~~~
Georg Brandl8ec7f652007-08-15 14:28:01 +0000597
598.. class:: TestCase([methodName])
599
600 Instances of the :class:`TestCase` class represent the smallest testable units
601 in the :mod:`unittest` universe. This class is intended to be used as a base
602 class, with specific tests being implemented by concrete subclasses. This class
603 implements the interface needed by the test runner to allow it to drive the
604 test, and methods that the test code can use to check for and report various
605 kinds of failure.
606
607 Each instance of :class:`TestCase` will run a single test method: the method
608 named *methodName*. If you remember, we had an earlier example that went
609 something like this::
610
611 def suite():
612 suite = unittest.TestSuite()
613 suite.addTest(WidgetTestCase('testDefaultSize'))
614 suite.addTest(WidgetTestCase('testResize'))
615 return suite
616
617 Here, we create two instances of :class:`WidgetTestCase`, each of which runs a
618 single test.
619
Benjamin Peterson99721e02009-03-23 23:10:14 +0000620 *methodName* defaults to :meth:`runTest`.
621
622 :class:`TestCase` instances provide three groups of methods: one group used
623 to run the test, another used by the test implementation to check conditions
624 and report failures, and some inquiry methods allowing information about the
625 test itself to be gathered.
626
627 Methods in the first group (running the test) are:
628
629
630 .. method:: setUp()
631
632 Method called to prepare the test fixture. This is called immediately
633 before calling the test method; any exception raised by this method will
634 be considered an error rather than a test failure. The default
635 implementation does nothing.
636
637
638 .. method:: tearDown()
639
640 Method called immediately after the test method has been called and the
641 result recorded. This is called even if the test method raised an
642 exception, so the implementation in subclasses may need to be particularly
643 careful about checking internal state. Any exception raised by this
644 method will be considered an error rather than a test failure. This
645 method will only be called if the :meth:`setUp` succeeds, regardless of
646 the outcome of the test method. The default implementation does nothing.
647
648
649 .. method:: run([result])
650
651 Run the test, collecting the result into the test result object passed as
652 *result*. If *result* is omitted or :const:`None`, a temporary result
653 object is created (by calling the :meth:`defaultTestCase` method) and
654 used; this result object is not returned to :meth:`run`'s caller.
655
656 The same effect may be had by simply calling the :class:`TestCase`
657 instance.
658
659
Benjamin Peterson47d97382009-03-26 20:05:50 +0000660 .. method:: skipTest(reason)
Benjamin Peterson99721e02009-03-23 23:10:14 +0000661
Benjamin Peterson31b78062009-03-23 23:13:36 +0000662 Calling this during the a test method or :meth:`setUp` skips the current
663 test. See :ref:`unittest-skipping` for more information.
Benjamin Peterson99721e02009-03-23 23:10:14 +0000664
665
666 .. method:: debug()
667
668 Run the test without collecting the result. This allows exceptions raised
669 by the test to be propagated to the caller, and can be used to support
670 running tests under a debugger.
671
672 The test code can use any of the following methods to check for and report
673 failures.
674
675
Gregory P. Smith28399852009-03-31 16:54:10 +0000676 .. method:: assertTrue(expr[, msg])
677 assert_(expr[, msg])
Benjamin Peterson99721e02009-03-23 23:10:14 +0000678 failUnless(expr[, msg])
Benjamin Peterson99721e02009-03-23 23:10:14 +0000679
Georg Brandl64034bb2009-04-25 14:51:31 +0000680 Signal a test failure if *expr* is false; the explanation for the failure
Benjamin Peterson99721e02009-03-23 23:10:14 +0000681 will be *msg* if given, otherwise it will be :const:`None`.
682
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000683 .. deprecated:: 2.7
684 :meth:`failUnless`.
685
Benjamin Peterson99721e02009-03-23 23:10:14 +0000686
687 .. method:: assertEqual(first, second[, msg])
688 failUnlessEqual(first, second[, msg])
689
690 Test that *first* and *second* are equal. If the values do not compare
691 equal, the test will fail with the explanation given by *msg*, or
Gregory P. Smith28399852009-03-31 16:54:10 +0000692 :const:`None`. Note that using :meth:`assertEqual` improves upon
693 doing the comparison as the first parameter to :meth:`assertTrue`: the
694 default value for *msg* include representations of both *first* and
695 *second*.
696
697 In addition, if *first* and *second* are the exact same type and one of
698 list, tuple, dict, set, or frozenset or any type that a subclass
699 registers :meth:`addTypeEqualityFunc` the type specific equality function
700 will be called in order to generate a more useful default error message.
701
702 .. versionchanged:: 2.7
703 Added the automatic calling of type specific equality function.
Benjamin Peterson99721e02009-03-23 23:10:14 +0000704
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000705 .. deprecated:: 2.7
706 :meth:`failUnlessEqual`.
707
Benjamin Peterson99721e02009-03-23 23:10:14 +0000708
709 .. method:: assertNotEqual(first, second[, msg])
710 failIfEqual(first, second[, msg])
711
712 Test that *first* and *second* are not equal. If the values do compare
713 equal, the test will fail with the explanation given by *msg*, or
Gregory P. Smith28399852009-03-31 16:54:10 +0000714 :const:`None`. Note that using :meth:`assertNotEqual` improves upon doing
715 the comparison as the first parameter to :meth:`assertTrue` is that the
Benjamin Peterson99721e02009-03-23 23:10:14 +0000716 default value for *msg* can be computed to include representations of both
717 *first* and *second*.
718
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000719 .. deprecated:: 2.7
720 :meth:`failIfEqual`.
721
Benjamin Peterson99721e02009-03-23 23:10:14 +0000722
723 .. method:: assertAlmostEqual(first, second[, places[, msg]])
724 failUnlessAlmostEqual(first, second[, places[, msg]])
725
726 Test that *first* and *second* are approximately equal by computing the
727 difference, rounding to the given number of decimal *places* (default 7),
728 and comparing to zero.
729
730 Note that comparing a given number of decimal places is not the same as
731 comparing a given number of significant digits. If the values do not
732 compare equal, the test will fail with the explanation given by *msg*, or
733 :const:`None`.
734
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000735 .. deprecated:: 2.7
736 :meth:`failUnlessAlmostEqual`.
737
Benjamin Peterson99721e02009-03-23 23:10:14 +0000738
739 .. method:: assertNotAlmostEqual(first, second[, places[, msg]])
740 failIfAlmostEqual(first, second[, places[, msg]])
741
742 Test that *first* and *second* are not approximately equal by computing
743 the difference, rounding to the given number of decimal *places* (default
744 7), and comparing to zero.
745
746 Note that comparing a given number of decimal places is not the same as
747 comparing a given number of significant digits. If the values do not
748 compare equal, the test will fail with the explanation given by *msg*, or
749 :const:`None`.
750
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000751 .. deprecated:: 2.7
752 :meth:`failIfAlmostEqual`.
753
Benjamin Peterson99721e02009-03-23 23:10:14 +0000754
Gregory P. Smith28399852009-03-31 16:54:10 +0000755 .. method:: assertGreater(first, second, msg=None)
756 assertGreaterEqual(first, second, msg=None)
757 assertLess(first, second, msg=None)
758 assertLessEqual(first, second, msg=None)
759
760 Test that *first* is respectively >, >=, < or <= than *second* depending
Andrew M. Kuchling59631852009-04-09 11:23:36 +0000761 on the method name. If not, the test will fail with an explanation
Gregory P. Smith28399852009-03-31 16:54:10 +0000762 or with the explanation given by *msg*::
763
764 >>> self.assertGreaterEqual(3, 4)
765 AssertionError: "3" unexpectedly not greater than or equal to "4"
766
767 .. versionadded:: 2.7
768
769
770 .. method:: assertMultiLineEqual(self, first, second, msg=None)
771
772 Test that the multiline string *first* is equal to the string *second*.
773 When not equal a diff of the two strings highlighting the differences
774 will be included in the error message.
775
776 If specified *msg* will be used as the error message on failure.
777
778 .. versionadded:: 2.7
779
780
781 .. method:: assertRegexpMatches(text, regexp[, msg=None]):
782
783 Verifies that a *regexp* search matches *text*. Fails with an error
784 message including the pattern and the *text*. *regexp* may be
785 a regular expression object or a string containing a regular expression
786 suitable for use by :func:`re.search`.
787
788 .. versionadded:: 2.7
789
790
791 .. method:: assertIn(first, second, msg=None)
792 assertNotIn(first, second, msg=None)
793
Andrew M. Kuchling59631852009-04-09 11:23:36 +0000794 Tests that *first* is or is not in *second* with an explanatory error
Gregory P. Smith28399852009-03-31 16:54:10 +0000795 message as appropriate.
796
797 If specified *msg* will be used as the error message on failure.
798
799 .. versionadded:: 2.7
800
801
802 .. method:: assertSameElements(expected, actual, msg=None)
803
804 Test that sequence *expected* contains the same elements as *actual*.
805 When they don't an error message listing the differences between the
806 sequences will be generated.
807
808 If specified *msg* will be used as the error message on failure.
809
810 .. versionadded:: 2.7
811
812
813 .. method:: assertSetEqual(set1, set2, msg=None)
814
815 Tests that two sets are equal. If not, an error message is constructed
816 that lists the differences between the sets.
817
818 Fails if either of *set1* or *set2* does not have a :meth:`set.difference`
819 method.
820
821 If specified *msg* will be used as the error message on failure.
822
823 .. versionadded:: 2.7
824
825
826 .. method:: assertDictEqual(expected, actual, msg=None)
827
828 Test that two dictionaries are equal. If not, an error message is
829 constructed that shows the differences in the dictionaries.
830
831 If specified *msg* will be used as the error message on failure.
832
833 .. versionadded:: 2.7
834
835
836 .. method:: assertDictContainsSubset(expected, actual, msg=None)
837
Andrew M. Kuchling59631852009-04-09 11:23:36 +0000838 Tests whether the key/value pairs in dictionary *actual* are a
Gregory P. Smith28399852009-03-31 16:54:10 +0000839 superset of those in *expected*. If not, an error message listing
840 the missing keys and mismatched values is generated.
841
842 If specified *msg* will be used as the error message on failure.
843
844 .. versionadded:: 2.7
845
846
847 .. method:: assertListEqual(list1, list2, msg=None)
848 assertTupleEqual(tuple1, tuple2, msg=None)
849
850 Tests that two lists or tuples are equal. If not an error message is
851 constructed that shows only the differences between the two. An error
852 is also raised if either of the parameters are of the wrong type.
853
854 If specified *msg* will be used as the error message on failure.
855
856 .. versionadded:: 2.7
857
858
859 .. method:: assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)
860
861 Tests that two sequences are equal. If a *seq_type* is supplied, both
862 *seq1* and *seq2* must be instances of *seq_type* or a failure will
863 be raised. If the sequences are different an error message is
864 constructed that shows the difference between the two.
865
866 If specified *msg* will be used as the error message on failure.
867
868 This method is used to implement :meth:`assertListEqual` and
869 :meth:`assertTupleEqual`.
870
871 .. versionadded:: 2.7
872
873
Benjamin Peterson99721e02009-03-23 23:10:14 +0000874 .. method:: assertRaises(exception[, callable, ...])
875 failUnlessRaises(exception[, callable, ...])
876
877 Test that an exception is raised when *callable* is called with any
878 positional or keyword arguments that are also passed to
879 :meth:`assertRaises`. The test passes if *exception* is raised, is an
880 error if another exception is raised, or fails if no exception is raised.
881 To catch any of a group of exceptions, a tuple containing the exception
882 classes may be passed as *exception*.
883
Benjamin Peterson7233acc2009-03-29 03:31:40 +0000884 If *callable* is omitted or None, returns a context manager so that the
885 code under test can be written inline rather than as a function::
886
887 with self.failUnlessRaises(some_error_class):
888 do_something()
889
Benjamin Peterson99721e02009-03-23 23:10:14 +0000890 .. versionchanged:: 2.7
Benjamin Peterson7233acc2009-03-29 03:31:40 +0000891 Added the ability to use :meth:`assertRaises` as a context manager.
Benjamin Peterson99721e02009-03-23 23:10:14 +0000892
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000893 .. deprecated:: 2.7
894 :meth:`failUnlessRaises`.
895
Benjamin Peterson99721e02009-03-23 23:10:14 +0000896
Gregory P. Smith28399852009-03-31 16:54:10 +0000897 .. method:: assertRaisesRegexp(exception, regexp[, callable, ...])
Benjamin Peterson99721e02009-03-23 23:10:14 +0000898
Gregory P. Smith28399852009-03-31 16:54:10 +0000899 Like :meth:`assertRaises` but also tests that *regexp* matches
900 on the string representation of the raised exception. *regexp* may be
901 a regular expression object or a string containing a regular expression
902 suitable for use by :func:`re.search`. Examples::
903
904 self.assertRaisesRegexp(ValueError, 'invalid literal for.*XYZ$',
905 int, 'XYZ')
906
907 or::
908
909 with self.assertRaisesRegexp(ValueError, 'literal'):
910 int('XYZ')
911
912 .. versionadded:: 2.7
913
914
915 .. method:: assertIsNone(expr[, msg])
916
917 This signals a test failure if *expr* is not None.
918
919 .. versionadded:: 2.7
920
921
922 .. method:: assertIsNotNone(expr[, msg])
923
924 The inverse of the :meth:`assertIsNone` method.
925 This signals a test failure if *expr* is None.
926
927 .. versionadded:: 2.7
928
929
Michael Foordf2dfef12009-04-05 19:19:28 +0000930 .. method:: assertIs(expr1, expr2[, msg])
931
932 This signals a test failure if *expr1* and *expr2* don't evaluate to the same
933 object.
934
935 .. versionadded:: 2.7
936
937
938 .. method:: assertIsNot(expr1, expr2[, msg])
939
940 The inverse of the :meth:`assertIs` method.
941 This signals a test failure if *expr1* and *expr2* evaluate to the same
942 object.
943
944 .. versionadded:: 2.7
945
946
Gregory P. Smith28399852009-03-31 16:54:10 +0000947 .. method:: assertFalse(expr[, msg])
948 failIf(expr[, msg])
949
950 The inverse of the :meth:`assertTrue` method is the :meth:`assertFalse` method.
Benjamin Peterson99721e02009-03-23 23:10:14 +0000951 This signals a test failure if *expr* is true, with *msg* or :const:`None`
952 for the error message.
953
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000954 .. deprecated:: 2.7
955 :meth:`failIf`.
956
Benjamin Peterson99721e02009-03-23 23:10:14 +0000957
958 .. method:: fail([msg])
959
960 Signals a test failure unconditionally, with *msg* or :const:`None` for
961 the error message.
962
963
964 .. attribute:: failureException
965
966 This class attribute gives the exception raised by the test method. If a
967 test framework needs to use a specialized exception, possibly to carry
968 additional information, it must subclass this exception in order to "play
969 fair" with the framework. The initial value of this attribute is
970 :exc:`AssertionError`.
971
Michael Foord345b2fe2009-04-02 03:20:38 +0000972
973 .. attribute:: longMessage
974
975 If set to True then any explicit failure message you pass in to the
976 assert methods will be appended to the end of the normal failure message.
977 The normal messages contain useful information about the objects involved,
978 for example the message from assertEqual shows you the repr of the two
979 unequal objects. Setting this attribute to True allows you to have a
980 custom error message in addition to the normal one.
981
982 This attribute defaults to False, meaning that a custom message passed
983 to an assert method will silence the normal message.
984
985 The class setting can be overridden in individual tests by assigning an
986 instance attribute to True or False before calling the assert methods.
987
988 .. versionadded:: 2.7
989
990
Benjamin Peterson99721e02009-03-23 23:10:14 +0000991 Testing frameworks can use the following methods to collect information on
992 the test:
993
994
995 .. method:: countTestCases()
996
997 Return the number of tests represented by this test object. For
998 :class:`TestCase` instances, this will always be ``1``.
999
1000
1001 .. method:: defaultTestResult()
1002
1003 Return an instance of the test result class that should be used for this
1004 test case class (if no other result instance is provided to the
1005 :meth:`run` method).
1006
1007 For :class:`TestCase` instances, this will always be an instance of
1008 :class:`TestResult`; subclasses of :class:`TestCase` should override this
1009 as necessary.
1010
1011
1012 .. method:: id()
1013
1014 Return a string identifying the specific test case. This is usually the
1015 full name of the test method, including the module and class name.
1016
1017
1018 .. method:: shortDescription()
1019
Gregory P. Smith28399852009-03-31 16:54:10 +00001020 Returns a description of the test, or :const:`None` if no description
1021 has been provided. The default implementation of this method
1022 returns the first line of the test method's docstring, if available,
1023 along with the method name.
1024
1025 .. versionchanged:: 2.7
Gregory P. Smith28399852009-03-31 16:54:10 +00001026 In earlier versions this only returned the first line of the test
1027 method's docstring, if available or the :const:`None`. That led to
1028 undesirable behavior of not printing the test name when someone was
1029 thoughtful enough to write a docstring.
1030
1031
1032 .. method:: addTypeEqualityFunc(typeobj, function)
1033
1034 Registers a type specific :meth:`assertEqual` equality checking
1035 function to be called by :meth:`assertEqual` when both objects it has
1036 been asked to compare are exactly *typeobj* (not subclasses).
1037 *function* must take two positional arguments and a third msg=None
1038 keyword argument just as :meth:`assertEqual` does. It must raise
Andrew M. Kuchling59631852009-04-09 11:23:36 +00001039 ``self.failureException`` when inequality between the first two
Gregory P. Smith28399852009-03-31 16:54:10 +00001040 parameters is detected.
1041
1042 One good use of custom equality checking functions for a type
Andrew M. Kuchling59631852009-04-09 11:23:36 +00001043 is to raise ``self.failureException`` with an error message useful
1044 for debugging the problem by explaining the inequalities in detail.
Gregory P. Smith28399852009-03-31 16:54:10 +00001045
1046 .. versionadded:: 2.7
Georg Brandl8ec7f652007-08-15 14:28:01 +00001047
1048
Michael Foorde2fb98f2009-05-02 20:15:05 +00001049 .. method:: addCleanup(function[, *args[, **kwargs]])
1050
1051 Add a function to be called after :meth:`tearDown` to cleanup resources
1052 used during the test. Functions will be called in reverse order to the
1053 order they are added (LIFO). They are called with any arguments and
1054 keyword arguments passed into :meth:`addCleanup` when they are
1055 added.
1056
1057 If :meth:`setUp` fails, meaning that :meth:`tearDown` is not called,
1058 then any cleanup functions added will still be called.
1059
1060 .. versionadded:: 2.7
1061
1062
1063 .. method:: doCleanups()
1064
1065 This method is called uncoditionally after :meth:`tearDown`, or
1066 after :meth:`setUp` if :meth:`setUp` raises an exception.
1067
1068 It is responsible for calling all the cleanup functions added by
1069 :meth:`addCleanup`. If you need cleanup functions to be called
1070 *prior* to :meth:`tearDown` then you can call :meth:`doCleanups`
1071 yourself.
1072
1073 :meth:`doCleanups` pops methods off the stack of cleanup
1074 functions one at a time, so it can be called at any time.
1075
1076 .. versionadded:: 2.7
1077
1078
Georg Brandl8ec7f652007-08-15 14:28:01 +00001079.. class:: FunctionTestCase(testFunc[, setUp[, tearDown[, description]]])
1080
1081 This class implements the portion of the :class:`TestCase` interface which
1082 allows the test runner to drive the test, but does not provide the methods which
1083 test code can use to check and report errors. This is used to create test cases
1084 using legacy test code, allowing it to be integrated into a :mod:`unittest`\
1085 -based test framework.
1086
1087
Benjamin Peterson99721e02009-03-23 23:10:14 +00001088.. _testsuite-objects:
1089
1090Grouping tests
1091~~~~~~~~~~~~~~
1092
Georg Brandl8ec7f652007-08-15 14:28:01 +00001093.. class:: TestSuite([tests])
1094
1095 This class represents an aggregation of individual tests cases and test suites.
1096 The class presents the interface needed by the test runner to allow it to be run
1097 as any other test case. Running a :class:`TestSuite` instance is the same as
1098 iterating over the suite, running each test individually.
1099
1100 If *tests* is given, it must be an iterable of individual test cases or other
1101 test suites that will be used to build the suite initially. Additional methods
1102 are provided to add test cases and suites to the collection later on.
1103
Benjamin Peterson176a56c2009-05-25 00:48:58 +00001104 :class:`TestSuite` objects behave much like :class:`TestCase` objects, except
1105 they do not actually implement a test. Instead, they are used to aggregate
1106 tests into groups of tests that should be run together. Some additional
1107 methods are available to add tests to :class:`TestSuite` instances:
Benjamin Peterson99721e02009-03-23 23:10:14 +00001108
1109
1110 .. method:: TestSuite.addTest(test)
1111
1112 Add a :class:`TestCase` or :class:`TestSuite` to the suite.
1113
1114
1115 .. method:: TestSuite.addTests(tests)
1116
1117 Add all the tests from an iterable of :class:`TestCase` and :class:`TestSuite`
1118 instances to this test suite.
1119
1120 This is equivalent to iterating over *tests*, calling :meth:`addTest` for each
1121 element.
1122
1123 :class:`TestSuite` shares the following methods with :class:`TestCase`:
1124
1125
1126 .. method:: run(result)
1127
1128 Run the tests associated with this suite, collecting the result into the
1129 test result object passed as *result*. Note that unlike
1130 :meth:`TestCase.run`, :meth:`TestSuite.run` requires the result object to
1131 be passed in.
1132
1133
1134 .. method:: debug()
1135
1136 Run the tests associated with this suite without collecting the
1137 result. This allows exceptions raised by the test to be propagated to the
1138 caller and can be used to support running tests under a debugger.
1139
1140
1141 .. method:: countTestCases()
1142
1143 Return the number of tests represented by this test object, including all
1144 individual tests and sub-suites.
1145
Georg Brandl9bc66822009-04-27 17:04:23 +00001146
1147 .. method:: __iter__()
1148
1149 Tests grouped by a :class:`TestSuite` are always accessed by iteration.
1150 Subclasses can lazily provide tests by overriding :meth:`__iter__`. Note
1151 that this method maybe called several times on a single suite
1152 (for example when counting tests or comparing for equality)
1153 so the tests returned must be the same for repeated iterations.
1154
1155 .. versionchanged:: 2.7
1156 In earlier versions the :class:`TestSuite` accessed tests directly rather
1157 than through iteration, so overriding :meth:`__iter__` wasn't sufficient
1158 for providing tests.
1159
Benjamin Peterson99721e02009-03-23 23:10:14 +00001160 In the typical usage of a :class:`TestSuite` object, the :meth:`run` method
1161 is invoked by a :class:`TestRunner` rather than by the end-user test harness.
1162
1163
Benjamin Peterson99721e02009-03-23 23:10:14 +00001164Loading and running tests
1165~~~~~~~~~~~~~~~~~~~~~~~~~
1166
Georg Brandl8ec7f652007-08-15 14:28:01 +00001167.. class:: TestLoader()
1168
Benjamin Peterson99721e02009-03-23 23:10:14 +00001169 The :class:`TestLoader` class is used to create test suites from classes and
1170 modules. Normally, there is no need to create an instance of this class; the
1171 :mod:`unittest` module provides an instance that can be shared as
1172 ``unittest.defaultTestLoader``. Using a subclass or instance, however, allows
1173 customization of some configurable properties.
1174
1175 :class:`TestLoader` objects have the following methods:
Georg Brandl8ec7f652007-08-15 14:28:01 +00001176
1177
Benjamin Peterson99721e02009-03-23 23:10:14 +00001178 .. method:: loadTestsFromTestCase(testCaseClass)
Georg Brandl8ec7f652007-08-15 14:28:01 +00001179
Benjamin Peterson99721e02009-03-23 23:10:14 +00001180 Return a suite of all tests cases contained in the :class:`TestCase`\ -derived
1181 :class:`testCaseClass`.
1182
1183
1184 .. method:: loadTestsFromModule(module)
1185
1186 Return a suite of all tests cases contained in the given module. This
1187 method searches *module* for classes derived from :class:`TestCase` and
1188 creates an instance of the class for each test method defined for the
1189 class.
1190
Georg Brandl16a57f62009-04-27 15:29:09 +00001191 .. note::
Benjamin Peterson99721e02009-03-23 23:10:14 +00001192
1193 While using a hierarchy of :class:`TestCase`\ -derived classes can be
1194 convenient in sharing fixtures and helper functions, defining test
1195 methods on base classes that are not intended to be instantiated
1196 directly does not play well with this method. Doing so, however, can
1197 be useful when the fixtures are different and defined in subclasses.
1198
Michael Foordb4a81c82009-05-29 20:33:46 +00001199 If a module provides a ``load_tests`` function it will be called to
1200 load the tests. This allows modules to customize test loading.
1201 This is the `load_tests protocol`_.
1202
1203 .. versionchanged:: 2.7
1204 Support for ``load_tests`` added.
1205
Benjamin Peterson99721e02009-03-23 23:10:14 +00001206
1207 .. method:: loadTestsFromName(name[, module])
1208
1209 Return a suite of all tests cases given a string specifier.
1210
1211 The specifier *name* is a "dotted name" that may resolve either to a
1212 module, a test case class, a test method within a test case class, a
1213 :class:`TestSuite` instance, or a callable object which returns a
1214 :class:`TestCase` or :class:`TestSuite` instance. These checks are
1215 applied in the order listed here; that is, a method on a possible test
1216 case class will be picked up as "a test method within a test case class",
1217 rather than "a callable object".
1218
1219 For example, if you have a module :mod:`SampleTests` containing a
Michael Foordb4a81c82009-05-29 20:33:46 +00001220 :class:`TestCase`\ -derived class :class:`SampleTestCase` with three
1221 test methods (:meth:`test_one`, :meth:`test_two`, and
1222 :meth:`test_three`), the specifier ``'SampleTests.SampleTestCase'``
1223 would cause this method to return a suite which will run all three test
1224 methods. Using the specifier ``'SampleTests.SampleTestCase.test_two'``
1225 would cause it to return a test suite which will run only the
1226 :meth:`test_two` test method. The specifier can refer to modules and
1227 packages which have not been imported; they will be imported as a
Benjamin Peterson99721e02009-03-23 23:10:14 +00001228 side-effect.
1229
1230 The method optionally resolves *name* relative to the given *module*.
1231
1232
1233 .. method:: loadTestsFromNames(names[, module])
1234
1235 Similar to :meth:`loadTestsFromName`, but takes a sequence of names rather
1236 than a single name. The return value is a test suite which supports all
1237 the tests defined for each name.
1238
1239
1240 .. method:: getTestCaseNames(testCaseClass)
1241
1242 Return a sorted sequence of method names found within *testCaseClass*;
1243 this should be a subclass of :class:`TestCase`.
1244
Michael Foordb4a81c82009-05-29 20:33:46 +00001245
1246 .. method:: discover(start_dir, pattern='test*.py', top_level_dir=None)
1247
1248 Find and return all test modules from the specified start directory,
1249 recursing into subdirectories to find them. Only test files that match
1250 *pattern* will be loaded. (Using shell style pattern matching.)
1251
1252 All test modules must be importable from the top level of the project. If
1253 the start directory is not the top level directory then the top level
1254 directory must be specified separately.
1255
1256 If a test package name (directory with :file:`__init__.py`) matches the
1257 pattern then the package will be checked for a ``load_tests``
1258 function. If this exists then it will be called with *loader*, *tests*,
1259 *pattern*.
1260
1261 If load_tests exists then discovery does *not* recurse into the package,
1262 ``load_tests`` is responsible for loading all tests in the package.
1263
1264 The pattern is deliberately not stored as a loader attribute so that
1265 packages can continue discovery themselves. *top_level_dir* is stored so
1266 ``load_tests`` does not need to pass this argument in to
1267 ``loader.discover()``.
1268
1269
Benjamin Peterson99721e02009-03-23 23:10:14 +00001270 The following attributes of a :class:`TestLoader` can be configured either by
1271 subclassing or assignment on an instance:
1272
1273
1274 .. attribute:: testMethodPrefix
1275
1276 String giving the prefix of method names which will be interpreted as test
1277 methods. The default value is ``'test'``.
1278
1279 This affects :meth:`getTestCaseNames` and all the :meth:`loadTestsFrom\*`
1280 methods.
1281
1282
1283 .. attribute:: sortTestMethodsUsing
1284
1285 Function to be used to compare method names when sorting them in
1286 :meth:`getTestCaseNames` and all the :meth:`loadTestsFrom\*` methods. The
1287 default value is the built-in :func:`cmp` function; the attribute can also
1288 be set to :const:`None` to disable the sort.
1289
1290
1291 .. attribute:: suiteClass
1292
1293 Callable object that constructs a test suite from a list of tests. No
1294 methods on the resulting object are needed. The default value is the
1295 :class:`TestSuite` class.
1296
1297 This affects all the :meth:`loadTestsFrom\*` methods.
1298
1299
Benjamin Peterson99721e02009-03-23 23:10:14 +00001300.. class:: TestResult
1301
1302 This class is used to compile information about which tests have succeeded
1303 and which have failed.
1304
1305 A :class:`TestResult` object stores the results of a set of tests. The
1306 :class:`TestCase` and :class:`TestSuite` classes ensure that results are
1307 properly recorded; test authors do not need to worry about recording the
1308 outcome of tests.
1309
1310 Testing frameworks built on top of :mod:`unittest` may want access to the
1311 :class:`TestResult` object generated by running a set of tests for reporting
1312 purposes; a :class:`TestResult` instance is returned by the
1313 :meth:`TestRunner.run` method for this purpose.
1314
1315 :class:`TestResult` instances have the following attributes that will be of
1316 interest when inspecting the results of running a set of tests:
1317
1318
1319 .. attribute:: errors
1320
1321 A list containing 2-tuples of :class:`TestCase` instances and strings
1322 holding formatted tracebacks. Each tuple represents a test which raised an
1323 unexpected exception.
1324
1325 .. versionchanged:: 2.2
Benjamin Peterson99721e02009-03-23 23:10:14 +00001326 Contains formatted tracebacks instead of :func:`sys.exc_info` results.
1327
1328
1329 .. attribute:: failures
1330
1331 A list containing 2-tuples of :class:`TestCase` instances and strings
1332 holding formatted tracebacks. Each tuple represents a test where a failure
1333 was explicitly signalled using the :meth:`TestCase.fail\*` or
1334 :meth:`TestCase.assert\*` methods.
1335
1336 .. versionchanged:: 2.2
Benjamin Peterson99721e02009-03-23 23:10:14 +00001337 Contains formatted tracebacks instead of :func:`sys.exc_info` results.
1338
1339 .. attribute:: skipped
1340
1341 A list containing 2-tuples of :class:`TestCase` instances and strings
1342 holding the reason for skipping the test.
1343
1344 .. versionadded:: 2.7
1345
1346 .. attribute:: expectedFailures
1347
1348 A list contaning 2-tuples of :class:`TestCase` instances and strings
1349 holding formatted tracebacks. Each tuple represents a expected failures
1350 of the test case.
1351
1352 .. attribute:: unexpectedSuccesses
1353
1354 A list containing :class:`TestCase` instances that were marked as expected
1355 failures, but succeeded.
1356
1357 .. attribute:: shouldStop
1358
1359 Set to ``True`` when the execution of tests should stop by :meth:`stop`.
1360
1361
1362 .. attribute:: testsRun
1363
1364 The total number of tests run so far.
1365
1366
1367 .. method:: wasSuccessful()
1368
1369 Return :const:`True` if all tests run so far have passed, otherwise returns
1370 :const:`False`.
1371
1372
1373 .. method:: stop()
1374
1375 This method can be called to signal that the set of tests being run should
1376 be aborted by setting the :attr:`shouldStop` attribute to :const:`True`.
1377 :class:`TestRunner` objects should respect this flag and return without
1378 running any additional tests.
1379
1380 For example, this feature is used by the :class:`TextTestRunner` class to
1381 stop the test framework when the user signals an interrupt from the
1382 keyboard. Interactive tools which provide :class:`TestRunner`
1383 implementations can use this in a similar manner.
1384
1385 The following methods of the :class:`TestResult` class are used to maintain
1386 the internal data structures, and may be extended in subclasses to support
1387 additional reporting requirements. This is particularly useful in building
1388 tools which support interactive reporting while tests are being run.
1389
1390
1391 .. method:: startTest(test)
1392
1393 Called when the test case *test* is about to be run.
1394
1395 The default implementation simply increments the instance's :attr:`testsRun`
1396 counter.
1397
1398
1399 .. method:: stopTest(test)
1400
1401 Called after the test case *test* has been executed, regardless of the
1402 outcome.
1403
1404 The default implementation does nothing.
1405
1406
Michael Foord07ef4872009-05-02 22:43:34 +00001407 .. method:: startTestRun(test)
1408
1409 Called once before any tests are executed.
1410
1411 .. versionadded:: 2.7
1412
1413
1414 .. method:: stopTestRun(test)
1415
1416 Called once before any tests are executed.
1417
1418 .. versionadded:: 2.7
1419
1420
Benjamin Peterson99721e02009-03-23 23:10:14 +00001421 .. method:: addError(test, err)
1422
1423 Called when the test case *test* raises an unexpected exception *err* is a
1424 tuple of the form returned by :func:`sys.exc_info`: ``(type, value,
1425 traceback)``.
1426
1427 The default implementation appends a tuple ``(test, formatted_err)`` to
1428 the instance's :attr:`errors` attribute, where *formatted_err* is a
1429 formatted traceback derived from *err*.
1430
1431
1432 .. method:: addFailure(test, err)
1433
Michael Foordb4a81c82009-05-29 20:33:46 +00001434 Called when the test case *test* signals a failure. *err* is a tuple of
1435 the form returned by :func:`sys.exc_info`: ``(type, value, traceback)``.
Benjamin Peterson99721e02009-03-23 23:10:14 +00001436
1437 The default implementation appends a tuple ``(test, formatted_err)`` to
1438 the instance's :attr:`failures` attribute, where *formatted_err* is a
1439 formatted traceback derived from *err*.
1440
1441
1442 .. method:: addSuccess(test)
1443
1444 Called when the test case *test* succeeds.
1445
1446 The default implementation does nothing.
1447
1448
1449 .. method:: addSkip(test, reason)
1450
1451 Called when the test case *test* is skipped. *reason* is the reason the
1452 test gave for skipping.
1453
1454 The default implementation appends a tuple ``(test, reason)`` to the
1455 instance's :attr:`skipped` attribute.
1456
1457
1458 .. method:: addExpectedFailure(test, err)
1459
1460 Called when the test case *test* fails, but was marked with the
1461 :func:`expectedFailure` decorator.
1462
1463 The default implementation appends a tuple ``(test, formatted_err)`` to
1464 the instance's :attr:`expectedFailures` attribute, where *formatted_err*
1465 is a formatted traceback derived from *err*.
1466
1467
1468 .. method:: addUnexpectedSuccess(test)
1469
1470 Called when the test case *test* was marked with the
1471 :func:`expectedFailure` decorator, but succeeded.
1472
1473 The default implementation appends the test to the instance's
1474 :attr:`unexpectedSuccesses` attribute.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001475
1476
1477.. data:: defaultTestLoader
1478
1479 Instance of the :class:`TestLoader` class intended to be shared. If no
1480 customization of the :class:`TestLoader` is needed, this instance can be used
1481 instead of repeatedly creating new instances.
1482
1483
1484.. class:: TextTestRunner([stream[, descriptions[, verbosity]]])
1485
1486 A basic test runner implementation which prints results on standard error. It
1487 has a few configurable parameters, but is essentially very simple. Graphical
1488 applications which run test suites should provide alternate implementations.
1489
Georg Brandl9bc66822009-04-27 17:04:23 +00001490 .. method:: _makeResult()
1491
1492 This method returns the instance of ``TestResult`` used by :meth:`run`.
1493 It is not intended to be called directly, but can be overridden in
1494 subclasses to provide a custom ``TestResult``.
1495
Georg Brandl8ec7f652007-08-15 14:28:01 +00001496
Michael Foord5d31e052009-05-11 17:59:43 +00001497.. function:: main([module[, defaultTest[, argv[, testRunner[, testLoader[, exit, [verbosity]]]]]]])
Georg Brandl8ec7f652007-08-15 14:28:01 +00001498
1499 A command-line program that runs a set of tests; this is primarily for making
1500 test modules conveniently executable. The simplest use for this function is to
1501 include the following line at the end of a test script::
1502
1503 if __name__ == '__main__':
1504 unittest.main()
1505
Michael Foord5d31e052009-05-11 17:59:43 +00001506 You can run tests with more detailed information by passing in the verbosity
1507 argument::
1508
1509 if __name__ == '__main__':
1510 unittest.main(verbosity=2)
1511
Georg Brandl8ec7f652007-08-15 14:28:01 +00001512 The *testRunner* argument can either be a test runner class or an already
Michael Foord829f6b82009-05-02 11:43:06 +00001513 created instance of it. By default ``main`` calls :func:`sys.exit` with
1514 an exit code indicating success or failure of the tests run.
1515
1516 ``main`` supports being used from the interactive interpreter by passing in the
1517 argument ``exit=False``. This displays the result on standard output without
1518 calling :func:`sys.exit`::
1519
1520 >>> from unittest import main
1521 >>> main(module='test_module', exit=False)
1522
1523 Calling ``main`` actually returns an instance of the ``TestProgram`` class.
1524 This stores the result of the tests run as the ``result`` attribute.
1525
1526 .. versionchanged:: 2.7
Michael Foord5d31e052009-05-11 17:59:43 +00001527 The ``exit`` and ``verbosity`` parameters were added.
Michael Foordb4a81c82009-05-29 20:33:46 +00001528
1529
1530load_tests Protocol
1531###################
1532
1533Modules or packages can customize how tests are loaded from them during normal
1534test runs or test discovery by implementing a function called ``load_tests``.
1535
1536If a test module defines ``load_tests`` it will be called by
1537:meth:`TestLoader.loadTestsFromModule` with the following arguments::
1538
1539 load_tests(loader, standard_tests, None)
1540
1541It should return a :class:`TestSuite`.
1542
1543*loader* is the instance of :class:`TestLoader` doing the loading.
1544*standard_tests* are the tests that would be loaded by default from the
1545module. It is common for test modules to only want to add or remove tests
1546from the standard set of tests.
1547The third argument is used when loading packages as part of test discovery.
1548
1549A typical ``load_tests`` function that loads tests from a specific set of
1550:class:`TestCase` classes may look like::
1551
1552 test_cases = (TestCase1, TestCase2, TestCase3)
1553
1554 def load_tests(loader, tests, pattern):
1555 suite = TestSuite()
1556 for test_class in test_cases:
1557 tests = loader.loadTestsFromTestCase(test_class)
1558 suite.addTests(tests)
1559 return suite
1560
1561If discovery is started, either from the command line or by calling
1562:meth:`TestLoader.discover`, with a pattern that matches a package
1563name then the package :file:`__init__.py` will be checked for ``load_tests``.
1564
1565.. note::
1566
1567 The default pattern is 'test*.py'. This matches all python files
1568 that start with 'test' but *won't* match any test directories.
1569
1570 A pattern like 'test*' will match test packages as well as
1571 modules.
1572
1573If the package :file:`__init__.py` defines ``load_tests`` then it will be
1574called and discovery not continued into the package. ``load_tests``
1575is called with the following arguments::
1576
1577 load_tests(loader, standard_tests, pattern)
1578
1579This should return a :class:`TestSuite` representing all the tests
1580from the package. (``standard_tests`` will only contain tests
1581collected from :file:`__init__.py`.)
1582
1583Because the pattern is passed into ``load_tests`` the package is free to
1584continue (and potentially modify) test discovery. A 'do nothing'
1585``load_tests`` function for a test package would look like::
1586
1587 def load_tests(loader, standard_tests, pattern):
1588 # top level directory cached on loader instance
1589 this_dir = os.path.dirname(__file__)
1590 package_tests = loader.discover(start_dir=this_dir, pattern=pattern)
1591 standard_tests.addTests(package_tests)
1592 return standard_tests