blob: c36ff87e5bc9d7d75e62fed5a8dcc98a0cc2e115 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +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
Georg Brandl116aa622007-08-15 14:28:22 +000012The Python unit testing framework, sometimes referred to as "PyUnit," is a
13Python language version of JUnit, by Kent Beck and Erich Gamma. JUnit is, in
14turn, a Java version of Kent's Smalltalk testing framework. Each is the de
15facto standard unit testing framework for its respective language.
16
17:mod:`unittest` supports test automation, sharing of setup and shutdown code for
18tests, aggregation of tests into collections, and independence of the tests from
19the reporting framework. The :mod:`unittest` module provides classes that make
20it easy to support these qualities for a set of tests.
21
22To achieve this, :mod:`unittest` supports some important concepts:
23
24test fixture
25 A :dfn:`test fixture` represents the preparation needed to perform one or more
26 tests, and any associate cleanup actions. This may involve, for example,
27 creating temporary or proxy databases, directories, or starting a server
28 process.
29
30test case
31 A :dfn:`test case` is the smallest unit of testing. It checks for a specific
32 response to a particular set of inputs. :mod:`unittest` provides a base class,
33 :class:`TestCase`, which may be used to create new test cases.
34
35test suite
36 A :dfn:`test suite` is a collection of test cases, test suites, or both. It is
37 used to aggregate tests that should be executed together.
38
39test runner
40 A :dfn:`test runner` is a component which orchestrates the execution of tests
41 and provides the outcome to the user. The runner may use a graphical interface,
42 a textual interface, or return a special value to indicate the results of
43 executing the tests.
44
45The test case and test fixture concepts are supported through the
46:class:`TestCase` and :class:`FunctionTestCase` classes; the former should be
47used when creating new tests, and the latter can be used when integrating
48existing test code with a :mod:`unittest`\ -driven framework. When building test
Benjamin Peterson52baa292009-03-24 00:56:30 +000049fixtures using :class:`TestCase`, the :meth:`~TestCase.setUp` and
50:meth:`~TestCase.tearDown` methods can be overridden to provide initialization
51and cleanup for the fixture. With :class:`FunctionTestCase`, existing functions
52can be passed to the constructor for these purposes. When the test is run, the
53fixture initialization is run first; if it succeeds, the cleanup method is run
54after the test has been executed, regardless of the outcome of the test. Each
55instance of the :class:`TestCase` will only be used to run a single test method,
56so a new fixture is created for each test.
Georg Brandl116aa622007-08-15 14:28:22 +000057
58Test suites are implemented by the :class:`TestSuite` class. This class allows
59individual tests and test suites to be aggregated; when the suite is executed,
Benjamin Peterson14a3dd72009-05-25 00:51:58 +000060all tests added directly to the suite and in "child" test suites are run.
Georg Brandl116aa622007-08-15 14:28:22 +000061
Benjamin Peterson52baa292009-03-24 00:56:30 +000062A test runner is an object that provides a single method,
63:meth:`~TestRunner.run`, which accepts a :class:`TestCase` or :class:`TestSuite`
64object as a parameter, and returns a result object. The class
65:class:`TestResult` is provided for use as the result object. :mod:`unittest`
66provides the :class:`TextTestRunner` as an example test runner which reports
67test results on the standard error stream by default. Alternate runners can be
68implemented for other environments (such as graphical environments) without any
69need to derive from a specific class.
Georg Brandl116aa622007-08-15 14:28:22 +000070
71
72.. seealso::
73
74 Module :mod:`doctest`
75 Another test-support module with a very different flavor.
76
Benjamin Petersonb48af542010-04-11 20:43:16 +000077 `unittest2: A backport of new unittest features for Python 2.4-2.6 <http://pypi.python.org/pypi/unittest2>`_
78 Many new features were added to unittest in Python 2.7, including test
79 discovery. unittest2 allows you to use these features with earlier
80 versions of Python.
81
Georg Brandl116aa622007-08-15 14:28:22 +000082 `Simple Smalltalk Testing: With Patterns <http://www.XProgramming.com/testfram.htm>`_
Benjamin Petersond2397752009-06-27 23:45:02 +000083 Kent Beck's original paper on testing frameworks using the pattern shared
84 by :mod:`unittest`.
Georg Brandl116aa622007-08-15 14:28:22 +000085
Raymond Hettinger6b232cd2009-03-24 00:22:53 +000086 `Nose <http://code.google.com/p/python-nose/>`_ and `py.test <http://pytest.org>`_
Benjamin Petersond2397752009-06-27 23:45:02 +000087 Third-party unittest frameworks with a lighter-weight syntax for writing
88 tests. For example, ``assert func(10) == 42``.
Raymond Hettinger6b232cd2009-03-24 00:22:53 +000089
Benjamin Petersonb48af542010-04-11 20:43:16 +000090 `The Python Testing Tools Taxonomy <http://pycheesecake.org/wiki/PythonTestingToolsTaxonomy>`_
91 An extensive list of Python testing tools including functional testing
92 frameworks and mock object libraries.
Benjamin Petersond2397752009-06-27 23:45:02 +000093
Benjamin Petersonb48af542010-04-11 20:43:16 +000094 `Testing in Python Mailing List <http://lists.idyll.org/listinfo/testing-in-python>`_
95 A special-interest-group for discussion of testing, and testing tools,
96 in Python.
Benjamin Petersond2397752009-06-27 23:45:02 +000097
Georg Brandl116aa622007-08-15 14:28:22 +000098.. _unittest-minimal-example:
99
100Basic example
101-------------
102
103The :mod:`unittest` module provides a rich set of tools for constructing and
104running tests. This section demonstrates that a small subset of the tools
105suffice to meet the needs of most users.
106
107Here is a short script to test three functions from the :mod:`random` module::
108
109 import random
110 import unittest
111
112 class TestSequenceFunctions(unittest.TestCase):
113
114 def setUp(self):
Benjamin Petersonbe0e1772009-07-25 01:02:01 +0000115 self.seq = list(range(10))
Georg Brandl116aa622007-08-15 14:28:22 +0000116
Benjamin Peterson52baa292009-03-24 00:56:30 +0000117 def test_shuffle(self):
Georg Brandl116aa622007-08-15 14:28:22 +0000118 # make sure the shuffled sequence does not lose any elements
119 random.shuffle(self.seq)
120 self.seq.sort()
Benjamin Petersonbe0e1772009-07-25 01:02:01 +0000121 self.assertEqual(self.seq, list(range(10)))
Georg Brandl116aa622007-08-15 14:28:22 +0000122
Benjamin Peterson847a4112010-03-14 15:04:17 +0000123 # should raise an exception for an immutable sequence
124 self.assertRaises(TypeError, random.shuffle, (1,2,3))
125
Benjamin Peterson52baa292009-03-24 00:56:30 +0000126 def test_choice(self):
Georg Brandl116aa622007-08-15 14:28:22 +0000127 element = random.choice(self.seq)
Benjamin Peterson847a4112010-03-14 15:04:17 +0000128 self.assertTrue(element in self.seq)
Georg Brandl116aa622007-08-15 14:28:22 +0000129
Benjamin Peterson52baa292009-03-24 00:56:30 +0000130 def test_sample(self):
Benjamin Peterson847a4112010-03-14 15:04:17 +0000131 with self.assertRaises(ValueError):
132 random.sample(self.seq, 20)
Georg Brandl116aa622007-08-15 14:28:22 +0000133 for element in random.sample(self.seq, 5):
Benjamin Peterson847a4112010-03-14 15:04:17 +0000134 self.assertTrue(element in self.seq)
Georg Brandl116aa622007-08-15 14:28:22 +0000135
136 if __name__ == '__main__':
137 unittest.main()
138
Benjamin Peterson52baa292009-03-24 00:56:30 +0000139A testcase is created by subclassing :class:`unittest.TestCase`. The three
Georg Brandl116aa622007-08-15 14:28:22 +0000140individual tests are defined with methods whose names start with the letters
141``test``. This naming convention informs the test runner about which methods
142represent tests.
143
Benjamin Peterson52baa292009-03-24 00:56:30 +0000144The crux of each test is a call to :meth:`~TestCase.assertEqual` to check for an
Michael Foord34c94622010-02-10 15:51:42 +0000145expected result; :meth:`~TestCase.assertTrue` to verify a condition; or
Benjamin Peterson52baa292009-03-24 00:56:30 +0000146:meth:`~TestCase.assertRaises` to verify that an expected exception gets raised.
147These methods are used instead of the :keyword:`assert` statement so the test
148runner can accumulate all test results and produce a report.
Georg Brandl116aa622007-08-15 14:28:22 +0000149
Benjamin Peterson52baa292009-03-24 00:56:30 +0000150When a :meth:`~TestCase.setUp` method is defined, the test runner will run that
151method prior to each test. Likewise, if a :meth:`~TestCase.tearDown` method is
152defined, the test runner will invoke that method after each test. In the
153example, :meth:`~TestCase.setUp` was used to create a fresh sequence for each
154test.
Georg Brandl116aa622007-08-15 14:28:22 +0000155
156The final block shows a simple way to run the tests. :func:`unittest.main`
157provides a command line interface to the test script. When run from the command
158line, the above script produces an output that looks like this::
159
160 ...
161 ----------------------------------------------------------------------
162 Ran 3 tests in 0.000s
163
164 OK
165
166Instead of :func:`unittest.main`, there are other ways to run the tests with a
167finer level of control, less terse output, and no requirement to be run from the
168command line. For example, the last two lines may be replaced with::
169
170 suite = unittest.TestLoader().loadTestsFromTestCase(TestSequenceFunctions)
171 unittest.TextTestRunner(verbosity=2).run(suite)
172
173Running the revised script from the interpreter or another script produces the
174following output::
175
Ezio Melottid59e44a2010-02-28 03:46:13 +0000176 test_choice (__main__.TestSequenceFunctions) ... ok
177 test_sample (__main__.TestSequenceFunctions) ... ok
178 test_shuffle (__main__.TestSequenceFunctions) ... ok
Georg Brandl116aa622007-08-15 14:28:22 +0000179
180 ----------------------------------------------------------------------
181 Ran 3 tests in 0.110s
182
183 OK
184
185The above examples show the most commonly used :mod:`unittest` features which
186are sufficient to meet many everyday testing needs. The remainder of the
187documentation explores the full feature set from first principles.
188
Benjamin Petersonb48af542010-04-11 20:43:16 +0000189
190.. _unittest-command-line-interface:
191
192Command Line Interface
193----------------------
194
195The unittest module can be used from the command line to run tests from
196modules, classes or even individual test methods::
197
198 python -m unittest test_module1 test_module2
199 python -m unittest test_module.TestClass
200 python -m unittest test_module.TestClass.test_method
201
202You can pass in a list with any combination of module names, and fully
203qualified class or method names.
204
205You can run tests with more detail (higher verbosity) by passing in the -v flag::
206
207 python -m unittest -v test_module
208
209For a list of all the command line options::
210
211 python -m unittest -h
212
213.. versionchanged:: 3.2
214 In earlier versions it was only possible to run individual test methods and
215 not modules or classes.
216
217
218failfast, catch and buffer command line options
219~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
220
221unittest supports three command options.
222
223* -f / --failfast
224
225 Stop the test run on the first error or failure.
226
227* -c / --catch
228
229 Control-c during the test run waits for the current test to end and then
230 reports all the results so far. A second control-c raises the normal
231 ``KeyboardInterrupt`` exception.
232
233 See `Signal Handling`_ for the functions that provide this functionality.
234
235* -b / --buffer
236
237 The standard out and standard error streams are buffered during the test
238 run. Output during a passing test is discarded. Output is echoed normally
239 on test fail or error and is added to the failure messages.
240
Ezio Melotti7afd3f52010-04-20 09:32:54 +0000241.. versionadded:: 3.2
Benjamin Petersonb48af542010-04-11 20:43:16 +0000242 The command line options ``-c``, ``-b`` and ``-f`` where added.
243
244The command line can also be used for test discovery, for running all of the
245tests in a project or just a subset.
246
247
248.. _unittest-test-discovery:
249
250Test Discovery
251--------------
252
Ezio Melotti7afd3f52010-04-20 09:32:54 +0000253.. versionadded:: 3.2
Benjamin Petersonb48af542010-04-11 20:43:16 +0000254
255Unittest supports simple test discovery. For a project's tests to be
256compatible with test discovery they must all be importable from the top level
257directory of the project (in other words, they must all be in Python packages).
258
259Test discovery is implemented in :meth:`TestLoader.discover`, but can also be
260used from the command line. The basic command line usage is::
261
262 cd project_directory
263 python -m unittest discover
264
265The ``discover`` sub-command has the following options:
266
267 -v, --verbose Verbose output
268 -s directory Directory to start discovery ('.' default)
269 -p pattern Pattern to match test files ('test*.py' default)
270 -t directory Top level directory of project (default to
271 start directory)
272
273The -s, -p, & -t options can be passsed in as positional arguments. The
274following two command lines are equivalent::
275
276 python -m unittest discover -s project_directory -p '*_test.py'
277 python -m unittest discover project_directory '*_test.py'
278
Michael Foord16f3e902010-05-08 15:13:42 +0000279As well as being a path it is possible to pass a package name, for example
280``myproject.subpackage.test``, as the start directory. The package name you
281supply will then be imported and its location on the filesystem will be used
282as the start directory.
283
284.. caution::
285
286 Test discovery loads tests by importing them. Once test discovery has
287 found all the test files from the start directory you specify it turns the
288 paths into package names to import. For example `foo/bar/baz.py` will be
289 imported as ``foo.bar.baz``.
290
291 If you have a package installed globally and attempt test discovery on
292 a different copy of the package then the import *could* happen from the
293 wrong place. If this happens test discovery will warn you and exit.
294
295 If you supply the start directory as a package name rather than a
296 path to a directory then discover assumes that whichever location it
297 imports from is the location you intended, so you will not get the
298 warning.
299
Benjamin Petersonb48af542010-04-11 20:43:16 +0000300Test modules and packages can customize test loading and discovery by through
301the `load_tests protocol`_.
302
303
Georg Brandl116aa622007-08-15 14:28:22 +0000304.. _organizing-tests:
305
306Organizing test code
307--------------------
308
309The basic building blocks of unit testing are :dfn:`test cases` --- single
310scenarios that must be set up and checked for correctness. In :mod:`unittest`,
311test cases are represented by instances of :mod:`unittest`'s :class:`TestCase`
312class. To make your own test cases you must write subclasses of
313:class:`TestCase`, or use :class:`FunctionTestCase`.
314
315An instance of a :class:`TestCase`\ -derived class is an object that can
316completely run a single test method, together with optional set-up and tidy-up
317code.
318
319The testing code of a :class:`TestCase` instance should be entirely self
320contained, such that it can be run either in isolation or in arbitrary
321combination with any number of other test cases.
322
Benjamin Peterson52baa292009-03-24 00:56:30 +0000323The simplest :class:`TestCase` subclass will simply override the
324:meth:`~TestCase.runTest` method in order to perform specific testing code::
Georg Brandl116aa622007-08-15 14:28:22 +0000325
326 import unittest
327
328 class DefaultWidgetSizeTestCase(unittest.TestCase):
329 def runTest(self):
330 widget = Widget('The widget')
331 self.assertEqual(widget.size(), (50, 50), 'incorrect default size')
332
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000333Note that in order to test something, we use the one of the :meth:`assert\*`
Benjamin Petersond2397752009-06-27 23:45:02 +0000334methods provided by the :class:`TestCase` base class. If the test fails, an
335exception will be raised, and :mod:`unittest` will identify the test case as a
336:dfn:`failure`. Any other exceptions will be treated as :dfn:`errors`. This
337helps you identify where the problem is: :dfn:`failures` are caused by incorrect
338results - a 5 where you expected a 6. :dfn:`Errors` are caused by incorrect
339code - e.g., a :exc:`TypeError` caused by an incorrect function call.
Georg Brandl116aa622007-08-15 14:28:22 +0000340
341The way to run a test case will be described later. For now, note that to
342construct an instance of such a test case, we call its constructor without
343arguments::
344
345 testCase = DefaultWidgetSizeTestCase()
346
347Now, such test cases can be numerous, and their set-up can be repetitive. In
348the above case, constructing a :class:`Widget` in each of 100 Widget test case
349subclasses would mean unsightly duplication.
350
351Luckily, we can factor out such set-up code by implementing a method called
Benjamin Peterson52baa292009-03-24 00:56:30 +0000352:meth:`~TestCase.setUp`, which the testing framework will automatically call for
353us when we run the test::
Georg Brandl116aa622007-08-15 14:28:22 +0000354
355 import unittest
356
357 class SimpleWidgetTestCase(unittest.TestCase):
358 def setUp(self):
359 self.widget = Widget('The widget')
360
361 class DefaultWidgetSizeTestCase(SimpleWidgetTestCase):
362 def runTest(self):
Ezio Melotti2d6c39b2010-02-04 20:27:41 +0000363 self.assertEqual(self.widget.size(), (50,50),
364 'incorrect default size')
Georg Brandl116aa622007-08-15 14:28:22 +0000365
366 class WidgetResizeTestCase(SimpleWidgetTestCase):
367 def runTest(self):
368 self.widget.resize(100,150)
Ezio Melotti2d6c39b2010-02-04 20:27:41 +0000369 self.assertEqual(self.widget.size(), (100,150),
370 'wrong size after resize')
Georg Brandl116aa622007-08-15 14:28:22 +0000371
Benjamin Peterson52baa292009-03-24 00:56:30 +0000372If the :meth:`~TestCase.setUp` method raises an exception while the test is
373running, the framework will consider the test to have suffered an error, and the
374:meth:`~TestCase.runTest` method will not be executed.
Georg Brandl116aa622007-08-15 14:28:22 +0000375
Benjamin Peterson52baa292009-03-24 00:56:30 +0000376Similarly, we can provide a :meth:`~TestCase.tearDown` method that tidies up
377after the :meth:`~TestCase.runTest` method has been run::
Georg Brandl116aa622007-08-15 14:28:22 +0000378
379 import unittest
380
381 class SimpleWidgetTestCase(unittest.TestCase):
382 def setUp(self):
383 self.widget = Widget('The widget')
384
385 def tearDown(self):
386 self.widget.dispose()
387 self.widget = None
388
Benjamin Peterson52baa292009-03-24 00:56:30 +0000389If :meth:`~TestCase.setUp` succeeded, the :meth:`~TestCase.tearDown` method will
390be run whether :meth:`~TestCase.runTest` succeeded or not.
Georg Brandl116aa622007-08-15 14:28:22 +0000391
392Such a working environment for the testing code is called a :dfn:`fixture`.
393
394Often, many small test cases will use the same fixture. In this case, we would
395end up subclassing :class:`SimpleWidgetTestCase` into many small one-method
396classes such as :class:`DefaultWidgetSizeTestCase`. This is time-consuming and
Georg Brandl116aa622007-08-15 14:28:22 +0000397discouraging, so in the same vein as JUnit, :mod:`unittest` provides a simpler
398mechanism::
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 self.widget = None
409
Ezio Melottid59e44a2010-02-28 03:46:13 +0000410 def test_default_size(self):
Ezio Melotti2d6c39b2010-02-04 20:27:41 +0000411 self.assertEqual(self.widget.size(), (50,50),
412 'incorrect default size')
Georg Brandl116aa622007-08-15 14:28:22 +0000413
Ezio Melottid59e44a2010-02-28 03:46:13 +0000414 def test_resize(self):
Georg Brandl116aa622007-08-15 14:28:22 +0000415 self.widget.resize(100,150)
Ezio Melotti2d6c39b2010-02-04 20:27:41 +0000416 self.assertEqual(self.widget.size(), (100,150),
417 'wrong size after resize')
Georg Brandl116aa622007-08-15 14:28:22 +0000418
Benjamin Peterson52baa292009-03-24 00:56:30 +0000419Here we have not provided a :meth:`~TestCase.runTest` method, but have instead
420provided two different test methods. Class instances will now each run one of
Ezio Melottid59e44a2010-02-28 03:46:13 +0000421the :meth:`test_\*` methods, with ``self.widget`` created and destroyed
Benjamin Peterson52baa292009-03-24 00:56:30 +0000422separately for each instance. When creating an instance we must specify the
423test method it is to run. We do this by passing the method name in the
424constructor::
Georg Brandl116aa622007-08-15 14:28:22 +0000425
Ezio Melottid59e44a2010-02-28 03:46:13 +0000426 defaultSizeTestCase = WidgetTestCase('test_default_size')
427 resizeTestCase = WidgetTestCase('test_resize')
Georg Brandl116aa622007-08-15 14:28:22 +0000428
429Test case instances are grouped together according to the features they test.
430:mod:`unittest` provides a mechanism for this: the :dfn:`test suite`,
431represented by :mod:`unittest`'s :class:`TestSuite` class::
432
433 widgetTestSuite = unittest.TestSuite()
Ezio Melottid59e44a2010-02-28 03:46:13 +0000434 widgetTestSuite.addTest(WidgetTestCase('test_default_size'))
435 widgetTestSuite.addTest(WidgetTestCase('test_resize'))
Georg Brandl116aa622007-08-15 14:28:22 +0000436
437For the ease of running tests, as we will see later, it is a good idea to
438provide in each test module a callable object that returns a pre-built test
439suite::
440
441 def suite():
442 suite = unittest.TestSuite()
Ezio Melottid59e44a2010-02-28 03:46:13 +0000443 suite.addTest(WidgetTestCase('test_default_size'))
444 suite.addTest(WidgetTestCase('test_resize'))
Georg Brandl116aa622007-08-15 14:28:22 +0000445 return suite
446
447or even::
448
449 def suite():
Ezio Melottid59e44a2010-02-28 03:46:13 +0000450 tests = ['test_default_size', 'test_resize']
Georg Brandl116aa622007-08-15 14:28:22 +0000451
452 return unittest.TestSuite(map(WidgetTestCase, tests))
453
454Since it is a common pattern to create a :class:`TestCase` subclass with many
455similarly named test functions, :mod:`unittest` provides a :class:`TestLoader`
456class that can be used to automate the process of creating a test suite and
457populating it with individual tests. For example, ::
458
459 suite = unittest.TestLoader().loadTestsFromTestCase(WidgetTestCase)
460
Ezio Melottid59e44a2010-02-28 03:46:13 +0000461will create a test suite that will run ``WidgetTestCase.test_default_size()`` and
462``WidgetTestCase.test_resize``. :class:`TestLoader` uses the ``'test'`` method
Georg Brandl116aa622007-08-15 14:28:22 +0000463name prefix to identify test methods automatically.
464
Mark Dickinsonc48d8342009-02-01 14:18:10 +0000465Note that the order in which the various test cases will be run is
466determined by sorting the test function names with respect to the
467built-in ordering for strings.
Georg Brandl116aa622007-08-15 14:28:22 +0000468
469Often it is desirable to group suites of test cases together, so as to run tests
470for the whole system at once. This is easy, since :class:`TestSuite` instances
471can be added to a :class:`TestSuite` just as :class:`TestCase` instances can be
472added to a :class:`TestSuite`::
473
474 suite1 = module1.TheTestSuite()
475 suite2 = module2.TheTestSuite()
476 alltests = unittest.TestSuite([suite1, suite2])
477
478You can place the definitions of test cases and test suites in the same modules
479as the code they are to test (such as :file:`widget.py`), but there are several
480advantages to placing the test code in a separate module, such as
481:file:`test_widget.py`:
482
483* The test module can be run standalone from the command line.
484
485* The test code can more easily be separated from shipped code.
486
487* There is less temptation to change test code to fit the code it tests without
488 a good reason.
489
490* Test code should be modified much less frequently than the code it tests.
491
492* Tested code can be refactored more easily.
493
494* Tests for modules written in C must be in separate modules anyway, so why not
495 be consistent?
496
497* If the testing strategy changes, there is no need to change the source code.
498
499
500.. _legacy-unit-tests:
501
502Re-using old test code
503----------------------
504
505Some users will find that they have existing test code that they would like to
506run from :mod:`unittest`, without converting every old test function to a
507:class:`TestCase` subclass.
508
509For this reason, :mod:`unittest` provides a :class:`FunctionTestCase` class.
510This subclass of :class:`TestCase` can be used to wrap an existing test
511function. Set-up and tear-down functions can also be provided.
512
513Given the following test function::
514
515 def testSomething():
516 something = makeSomething()
517 assert something.name is not None
518 # ...
519
520one can create an equivalent test case instance as follows::
521
522 testcase = unittest.FunctionTestCase(testSomething)
523
524If there are additional set-up and tear-down methods that should be called as
525part of the test case's operation, they can also be provided like so::
526
527 testcase = unittest.FunctionTestCase(testSomething,
528 setUp=makeSomethingDB,
529 tearDown=deleteSomethingDB)
530
531To make migrating existing test suites easier, :mod:`unittest` supports tests
532raising :exc:`AssertionError` to indicate test failure. However, it is
533recommended that you use the explicit :meth:`TestCase.fail\*` and
534:meth:`TestCase.assert\*` methods instead, as future versions of :mod:`unittest`
535may treat :exc:`AssertionError` differently.
536
537.. note::
538
Benjamin Petersond2397752009-06-27 23:45:02 +0000539 Even though :class:`FunctionTestCase` can be used to quickly convert an
540 existing test base over to a :mod:`unittest`\ -based system, this approach is
541 not recommended. Taking the time to set up proper :class:`TestCase`
542 subclasses will make future test refactorings infinitely easier.
Georg Brandl116aa622007-08-15 14:28:22 +0000543
Benjamin Peterson52baa292009-03-24 00:56:30 +0000544In some cases, the existing tests may have been written using the :mod:`doctest`
545module. If so, :mod:`doctest` provides a :class:`DocTestSuite` class that can
546automatically build :class:`unittest.TestSuite` instances from the existing
547:mod:`doctest`\ -based tests.
548
Georg Brandl116aa622007-08-15 14:28:22 +0000549
Benjamin Peterson5254c042009-03-23 22:25:03 +0000550.. _unittest-skipping:
551
552Skipping tests and expected failures
553------------------------------------
554
Michael Foordf5c851a2010-02-05 21:48:03 +0000555.. versionadded:: 3.1
556
Benjamin Peterson5254c042009-03-23 22:25:03 +0000557Unittest supports skipping individual test methods and even whole classes of
558tests. In addition, it supports marking a test as a "expected failure," a test
559that is broken and will fail, but shouldn't be counted as a failure on a
560:class:`TestResult`.
561
562Skipping a test is simply a matter of using the :func:`skip` :term:`decorator`
563or one of its conditional variants.
564
565Basic skipping looks like this: ::
566
567 class MyTestCase(unittest.TestCase):
568
569 @unittest.skip("demonstrating skipping")
570 def test_nothing(self):
571 self.fail("shouldn't happen")
572
Benjamin Petersond2397752009-06-27 23:45:02 +0000573 @unittest.skipIf(mylib.__version__ < (1, 3),
574 "not supported in this library version")
Benjamin Petersonded31c42009-03-30 15:04:16 +0000575 def test_format(self):
576 # Tests that work for only a certain version of the library.
577 pass
578
579 @unittest.skipUnless(sys.platform.startswith("win"), "requires Windows")
580 def test_windows_support(self):
581 # windows specific testing code
582 pass
583
Benjamin Peterson5254c042009-03-23 22:25:03 +0000584This is the output of running the example above in verbose mode: ::
585
Benjamin Petersonded31c42009-03-30 15:04:16 +0000586 test_format (__main__.MyTestCase) ... skipped 'not supported in this library version'
Benjamin Peterson5254c042009-03-23 22:25:03 +0000587 test_nothing (__main__.MyTestCase) ... skipped 'demonstrating skipping'
Benjamin Petersonded31c42009-03-30 15:04:16 +0000588 test_windows_support (__main__.MyTestCase) ... skipped 'requires Windows'
Benjamin Peterson5254c042009-03-23 22:25:03 +0000589
590 ----------------------------------------------------------------------
Benjamin Petersonded31c42009-03-30 15:04:16 +0000591 Ran 3 tests in 0.005s
592
593 OK (skipped=3)
Benjamin Peterson5254c042009-03-23 22:25:03 +0000594
595Classes can be skipped just like methods: ::
596
597 @skip("showing class skipping")
598 class MySkippedTestCase(unittest.TestCase):
599 def test_not_run(self):
600 pass
601
Benjamin Peterson52baa292009-03-24 00:56:30 +0000602:meth:`TestCase.setUp` can also skip the test. This is useful when a resource
603that needs to be set up is not available.
604
Benjamin Peterson5254c042009-03-23 22:25:03 +0000605Expected failures use the :func:`expectedFailure` decorator. ::
606
607 class ExpectedFailureTestCase(unittest.TestCase):
608 @unittest.expectedFailure
609 def test_fail(self):
610 self.assertEqual(1, 0, "broken")
611
612It's easy to roll your own skipping decorators by making a decorator that calls
613:func:`skip` on the test when it wants it to be skipped. This decorator skips
614the test unless the passed object has a certain attribute: ::
615
616 def skipUnlessHasattr(obj, attr):
617 if hasattr(obj, attr):
618 return lambda func: func
619 return unittest.skip("{0!r} doesn't have {1!r}".format(obj, attr))
620
621The following decorators implement test skipping and expected failures:
622
623.. function:: skip(reason)
624
625 Unconditionally skip the decorated test. *reason* should describe why the
626 test is being skipped.
627
628.. function:: skipIf(condition, reason)
629
630 Skip the decorated test if *condition* is true.
631
632.. function:: skipUnless(condition, reason)
633
634 Skip the decoratored test unless *condition* is true.
635
636.. function:: expectedFailure
637
638 Mark the test as an expected failure. If the test fails when run, the test
639 is not counted as a failure.
640
Benjamin Petersonb48af542010-04-11 20:43:16 +0000641Skipped tests will not have :meth:`setUp` or :meth:`tearDown` run around them.
642Skipped classes will not have :meth:`setUpClass` or :meth:`tearDownClass` run.
643
Benjamin Peterson5254c042009-03-23 22:25:03 +0000644
Georg Brandl116aa622007-08-15 14:28:22 +0000645.. _unittest-contents:
646
647Classes and functions
648---------------------
649
Benjamin Peterson52baa292009-03-24 00:56:30 +0000650This section describes in depth the API of :mod:`unittest`.
651
652
653.. _testcase-objects:
654
655Test cases
656~~~~~~~~~~
Georg Brandl116aa622007-08-15 14:28:22 +0000657
Georg Brandl7f01a132009-09-16 15:58:14 +0000658.. class:: TestCase(methodName='runTest')
Georg Brandl116aa622007-08-15 14:28:22 +0000659
660 Instances of the :class:`TestCase` class represent the smallest testable units
661 in the :mod:`unittest` universe. This class is intended to be used as a base
662 class, with specific tests being implemented by concrete subclasses. This class
663 implements the interface needed by the test runner to allow it to drive the
664 test, and methods that the test code can use to check for and report various
665 kinds of failure.
666
667 Each instance of :class:`TestCase` will run a single test method: the method
668 named *methodName*. If you remember, we had an earlier example that went
669 something like this::
670
671 def suite():
672 suite = unittest.TestSuite()
Ezio Melottid59e44a2010-02-28 03:46:13 +0000673 suite.addTest(WidgetTestCase('test_default_size'))
674 suite.addTest(WidgetTestCase('test_resize'))
Georg Brandl116aa622007-08-15 14:28:22 +0000675 return suite
676
677 Here, we create two instances of :class:`WidgetTestCase`, each of which runs a
678 single test.
679
Benjamin Peterson52baa292009-03-24 00:56:30 +0000680 *methodName* defaults to :meth:`runTest`.
681
682 :class:`TestCase` instances provide three groups of methods: one group used
683 to run the test, another used by the test implementation to check conditions
684 and report failures, and some inquiry methods allowing information about the
685 test itself to be gathered.
686
687 Methods in the first group (running the test) are:
688
689
690 .. method:: setUp()
691
692 Method called to prepare the test fixture. This is called immediately
693 before calling the test method; any exception raised by this method will
694 be considered an error rather than a test failure. The default
695 implementation does nothing.
696
697
698 .. method:: tearDown()
699
700 Method called immediately after the test method has been called and the
701 result recorded. This is called even if the test method raised an
702 exception, so the implementation in subclasses may need to be particularly
703 careful about checking internal state. Any exception raised by this
704 method will be considered an error rather than a test failure. This
705 method will only be called if the :meth:`setUp` succeeds, regardless of
706 the outcome of the test method. The default implementation does nothing.
707
708
Benjamin Petersonb48af542010-04-11 20:43:16 +0000709 .. method:: setUpClass()
710
711 A class method called before tests in an individual class run.
712 ``setUpClass`` is called with the class as the only argument
713 and must be decorated as a :func:`classmethod`::
714
715 @classmethod
716 def setUpClass(cls):
717 ...
718
719 See `Class and Module Fixtures`_ for more details.
720
721 .. versionadded:: 3.2
722
723
724 .. method:: tearDownClass()
725
726 A class method called after tests in an individual class have run.
727 ``tearDownClass`` is called with the class as the only argument
728 and must be decorated as a :meth:`classmethod`::
729
730 @classmethod
731 def tearDownClass(cls):
732 ...
733
734 See `Class and Module Fixtures`_ for more details.
735
736 .. versionadded:: 3.2
737
738
Georg Brandl7f01a132009-09-16 15:58:14 +0000739 .. method:: run(result=None)
Benjamin Peterson52baa292009-03-24 00:56:30 +0000740
741 Run the test, collecting the result into the test result object passed as
742 *result*. If *result* is omitted or :const:`None`, a temporary result
Alexandre Vassalotti260484d2009-07-17 11:43:26 +0000743 object is created (by calling the :meth:`defaultTestResult` method) and
744 used. The result object is not returned to :meth:`run`'s caller.
Benjamin Peterson52baa292009-03-24 00:56:30 +0000745
746 The same effect may be had by simply calling the :class:`TestCase`
747 instance.
748
749
Benjamin Petersone549ead2009-03-28 21:42:05 +0000750 .. method:: skipTest(reason)
Benjamin Peterson52baa292009-03-24 00:56:30 +0000751
Stefan Kraha5bf3f52010-05-19 16:09:41 +0000752 Calling this during a test method or :meth:`setUp` skips the current
Benjamin Peterson52baa292009-03-24 00:56:30 +0000753 test. See :ref:`unittest-skipping` for more information.
754
Ezio Melotti7afd3f52010-04-20 09:32:54 +0000755 .. versionadded:: 3.1
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000756
Benjamin Peterson52baa292009-03-24 00:56:30 +0000757
758 .. method:: debug()
759
760 Run the test without collecting the result. This allows exceptions raised
761 by the test to be propagated to the caller, and can be used to support
762 running tests under a debugger.
763
764 The test code can use any of the following methods to check for and report
765 failures.
766
767
Georg Brandl7f01a132009-09-16 15:58:14 +0000768 .. method:: assertTrue(expr, msg=None)
769 assert_(expr, msg=None)
770 failUnless(expr, msg=None)
Benjamin Peterson52baa292009-03-24 00:56:30 +0000771
Georg Brandlff2ad0e2009-04-27 16:51:45 +0000772 Signal a test failure if *expr* is false; the explanation for the failure
Benjamin Peterson52baa292009-03-24 00:56:30 +0000773 will be *msg* if given, otherwise it will be :const:`None`.
774
Raymond Hettinger35a88362009-04-09 00:08:24 +0000775 .. deprecated:: 3.1
Georg Brandl8569e582010-05-19 20:57:08 +0000776 :meth:`failUnless` and :meth:`assert_`; use :meth:`assertTrue`.
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000777
Benjamin Peterson52baa292009-03-24 00:56:30 +0000778
Georg Brandl7f01a132009-09-16 15:58:14 +0000779 .. method:: assertEqual(first, second, msg=None)
780 failUnlessEqual(first, second, msg=None)
Benjamin Peterson52baa292009-03-24 00:56:30 +0000781
782 Test that *first* and *second* are equal. If the values do not compare
783 equal, the test will fail with the explanation given by *msg*, or
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000784 :const:`None`. Note that using :meth:`assertEqual` improves upon
785 doing the comparison as the first parameter to :meth:`assertTrue`: the
786 default value for *msg* include representations of both *first* and
787 *second*.
788
789 In addition, if *first* and *second* are the exact same type and one of
Michael Foord02834952010-02-08 23:10:39 +0000790 list, tuple, dict, set, frozenset or str or any type that a subclass
791 registers with :meth:`addTypeEqualityFunc` the type specific equality
792 function will be called in order to generate a more useful default
793 error message.
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000794
Raymond Hettinger35a88362009-04-09 00:08:24 +0000795 .. versionchanged:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000796 Added the automatic calling of type specific equality function.
797
Michael Foord28a817e2010-02-09 00:03:57 +0000798 .. versionchanged:: 3.2
799 :meth:`assertMultiLineEqual` added as the default type equality
800 function for comparing strings.
Michael Foord02834952010-02-08 23:10:39 +0000801
Raymond Hettinger35a88362009-04-09 00:08:24 +0000802 .. deprecated:: 3.1
Georg Brandl89fad142010-03-14 10:23:39 +0000803 :meth:`failUnlessEqual`; use :meth:`assertEqual`.
Benjamin Peterson52baa292009-03-24 00:56:30 +0000804
805
Georg Brandl7f01a132009-09-16 15:58:14 +0000806 .. method:: assertNotEqual(first, second, msg=None)
807 failIfEqual(first, second, msg=None)
Benjamin Peterson52baa292009-03-24 00:56:30 +0000808
809 Test that *first* and *second* are not equal. If the values do compare
810 equal, the test will fail with the explanation given by *msg*, or
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000811 :const:`None`. Note that using :meth:`assertNotEqual` improves upon doing
812 the comparison as the first parameter to :meth:`assertTrue` is that the
Benjamin Peterson52baa292009-03-24 00:56:30 +0000813 default value for *msg* can be computed to include representations of both
814 *first* and *second*.
815
Raymond Hettinger35a88362009-04-09 00:08:24 +0000816 .. deprecated:: 3.1
Georg Brandl89fad142010-03-14 10:23:39 +0000817 :meth:`failIfEqual`; use :meth:`assertNotEqual`.
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000818
Benjamin Peterson70e32c82009-03-24 01:00:11 +0000819
Benjamin Petersonb48af542010-04-11 20:43:16 +0000820 .. method:: assertAlmostEqual(first, second, *, places=7, msg=None, delta=None)
821 failUnlessAlmostEqual(first, second, *, places=7, msg=None, delta=None)
Benjamin Peterson52baa292009-03-24 00:56:30 +0000822
823 Test that *first* and *second* are approximately equal by computing the
824 difference, rounding to the given number of decimal *places* (default 7),
825 and comparing to zero.
826
827 Note that comparing a given number of decimal places is not the same as
828 comparing a given number of significant digits. If the values do not
829 compare equal, the test will fail with the explanation given by *msg*, or
830 :const:`None`.
831
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +0000832 .. versionchanged:: 3.2
833 Objects that compare equal are automatically almost equal.
Benjamin Petersonb48af542010-04-11 20:43:16 +0000834 Added the ``delta`` keyword argument.
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +0000835
Raymond Hettinger35a88362009-04-09 00:08:24 +0000836 .. deprecated:: 3.1
Georg Brandl89fad142010-03-14 10:23:39 +0000837 :meth:`failUnlessAlmostEqual`; use :meth:`assertAlmostEqual`.
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000838
Benjamin Peterson52baa292009-03-24 00:56:30 +0000839
Benjamin Petersonb48af542010-04-11 20:43:16 +0000840 .. method:: assertNotAlmostEqual(first, second, *, places=7, msg=None, delta=None)
841 failIfAlmostEqual(first, second, *, places=7, msg=None, delta=None)
Benjamin Peterson52baa292009-03-24 00:56:30 +0000842
843 Test that *first* and *second* are not approximately equal by computing
844 the difference, rounding to the given number of decimal *places* (default
845 7), and comparing to zero.
846
847 Note that comparing a given number of decimal places is not the same as
848 comparing a given number of significant digits. If the values do not
849 compare equal, the test will fail with the explanation given by *msg*, or
850 :const:`None`.
851
Benjamin Petersonb48af542010-04-11 20:43:16 +0000852 If *delta* is supplied instead of *places* then the the difference
853 between *first* and *second* must be more than *delta*.
854
855 Supplying both *delta* and *places* raises a ``TypeError``.
856
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +0000857 .. versionchanged:: 3.2
858 Objects that compare equal automatically fail.
Benjamin Petersonb48af542010-04-11 20:43:16 +0000859 Added the ``delta`` keyword argument.
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +0000860
Raymond Hettinger35a88362009-04-09 00:08:24 +0000861 .. deprecated:: 3.1
Georg Brandl89fad142010-03-14 10:23:39 +0000862 :meth:`failIfAlmostEqual`; use :meth:`assertNotAlmostEqual`.
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000863
864
865 .. method:: assertGreater(first, second, msg=None)
866 assertGreaterEqual(first, second, msg=None)
867 assertLess(first, second, msg=None)
868 assertLessEqual(first, second, msg=None)
869
870 Test that *first* is respectively >, >=, < or <= than *second* depending
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000871 on the method name. If not, the test will fail with an explanation
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000872 or with the explanation given by *msg*::
873
874 >>> self.assertGreaterEqual(3, 4)
875 AssertionError: "3" unexpectedly not greater than or equal to "4"
876
Raymond Hettinger35a88362009-04-09 00:08:24 +0000877 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000878
879
880 .. method:: assertMultiLineEqual(self, first, second, msg=None)
881
882 Test that the multiline string *first* is equal to the string *second*.
883 When not equal a diff of the two strings highlighting the differences
Michael Foord02834952010-02-08 23:10:39 +0000884 will be included in the error message. This method is used by default
885 when comparing strings with :meth:`assertEqual`.
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000886
Michael Foordabd91d52010-03-20 18:09:14 +0000887 If specified, *msg* will be used as the error message on failure.
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000888
Raymond Hettinger35a88362009-04-09 00:08:24 +0000889 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000890
891
Ezio Melotti732b6822010-01-16 19:40:06 +0000892 .. method:: assertRegexpMatches(text, regexp, msg=None)
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000893
894 Verifies that a *regexp* search matches *text*. Fails with an error
895 message including the pattern and the *text*. *regexp* may be
896 a regular expression object or a string containing a regular expression
897 suitable for use by :func:`re.search`.
898
Raymond Hettinger35a88362009-04-09 00:08:24 +0000899 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000900
901
Benjamin Petersonb48af542010-04-11 20:43:16 +0000902 .. method:: assertNotRegexpMatches(text, regexp, msg=None)
903
904 Verifies that a *regexp* search does not match *text*. Fails with an error
Michael Foorde3ef5f12010-05-08 16:46:14 +0000905 message including the pattern and the part of *text* that matches. *regexp*
906 may be a regular expression object or a string containing a regular
907 expression suitable for use by :func:`re.search`.
Benjamin Petersonb48af542010-04-11 20:43:16 +0000908
Ezio Melotti7afd3f52010-04-20 09:32:54 +0000909 .. versionadded:: 3.2
Benjamin Petersonb48af542010-04-11 20:43:16 +0000910
911
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000912 .. method:: assertIn(first, second, msg=None)
913 assertNotIn(first, second, msg=None)
914
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000915 Tests that *first* is or is not in *second* with an explanatory error
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000916 message as appropriate.
917
Michael Foordabd91d52010-03-20 18:09:14 +0000918 If specified, *msg* will be used as the error message on failure.
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000919
Raymond Hettinger35a88362009-04-09 00:08:24 +0000920 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000921
922
Michael Foorde9abbee2010-02-05 20:54:27 +0000923 .. method:: assertSameElements(actual, expected, msg=None)
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000924
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +0000925 Test that sequence *expected* contains the same elements as *actual*,
926 regardless of their order. When they don't, an error message listing
927 the differences between the sequences will be generated.
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000928
Michael Foorde9abbee2010-02-05 20:54:27 +0000929 Duplicate elements are ignored when comparing *actual* and *expected*.
930 It is the equivalent of ``assertEqual(set(expected), set(actual))``
Michael Foordabd91d52010-03-20 18:09:14 +0000931 but it works with sequences of unhashable objects as well. Because
932 duplicates are ignored, this method has been deprecated in favour of
933 :meth:`assertItemsEqual`.
Michael Foorde9abbee2010-02-05 20:54:27 +0000934
Michael Foordabd91d52010-03-20 18:09:14 +0000935 If specified, *msg* will be used as the error message on failure.
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000936
Raymond Hettinger35a88362009-04-09 00:08:24 +0000937 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000938
Michael Foordabd91d52010-03-20 18:09:14 +0000939 .. deprecated:: 3.2
940
941 .. method:: assertItemsEqual(actual, expected, msg=None)
942
943 Test that sequence *expected* contains the same elements as *actual*,
944 regardless of their order. When they don't, an error message listing the
945 differences between the sequences will be generated.
946
947 Duplicate elements are *not* ignored when comparing *actual* and
948 *expected*. It verifies if each element has the same count in both
949 sequences. It is the equivalent of ``assertEqual(sorted(expected),
950 sorted(actual))`` but it works with sequences of unhashable objects as
951 well.
952
953 If specified, *msg* will be used as the error message on failure.
954
955 .. versionadded:: 3.2
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000956
957 .. method:: assertSetEqual(set1, set2, msg=None)
958
959 Tests that two sets are equal. If not, an error message is constructed
Michael Foord02834952010-02-08 23:10:39 +0000960 that lists the differences between the sets. This method is used by
961 default when comparing sets or frozensets with :meth:`assertEqual`.
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000962
963 Fails if either of *set1* or *set2* does not have a :meth:`set.difference`
964 method.
965
Michael Foordabd91d52010-03-20 18:09:14 +0000966 If specified, *msg* will be used as the error message on failure.
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000967
Raymond Hettinger35a88362009-04-09 00:08:24 +0000968 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000969
970
971 .. method:: assertDictEqual(expected, actual, msg=None)
972
973 Test that two dictionaries are equal. If not, an error message is
Michael Foord02834952010-02-08 23:10:39 +0000974 constructed that shows the differences in the dictionaries. This
975 method will be used by default to compare dictionaries in
976 calls to :meth:`assertEqual`.
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000977
Michael Foordabd91d52010-03-20 18:09:14 +0000978 If specified, *msg* will be used as the error message on failure.
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000979
Raymond Hettinger35a88362009-04-09 00:08:24 +0000980 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000981
982
983 .. method:: assertDictContainsSubset(expected, actual, msg=None)
984
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000985 Tests whether the key/value pairs in dictionary *actual* are a
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000986 superset of those in *expected*. If not, an error message listing
987 the missing keys and mismatched values is generated.
988
Michael Foordabd91d52010-03-20 18:09:14 +0000989 If specified, *msg* will be used as the error message on failure.
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000990
Raymond Hettinger35a88362009-04-09 00:08:24 +0000991 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000992
993
994 .. method:: assertListEqual(list1, list2, msg=None)
995 assertTupleEqual(tuple1, tuple2, msg=None)
996
997 Tests that two lists or tuples are equal. If not an error message is
998 constructed that shows only the differences between the two. An error
999 is also raised if either of the parameters are of the wrong type.
Michael Foord02834952010-02-08 23:10:39 +00001000 These methods are used by default when comparing lists or tuples with
1001 :meth:`assertEqual`.
Benjamin Peterson7fe73a12009-04-04 16:35:46 +00001002
Michael Foordabd91d52010-03-20 18:09:14 +00001003 If specified, *msg* will be used as the error message on failure.
Benjamin Peterson7fe73a12009-04-04 16:35:46 +00001004
Raymond Hettinger35a88362009-04-09 00:08:24 +00001005 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +00001006
1007
1008 .. method:: assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)
1009
1010 Tests that two sequences are equal. If a *seq_type* is supplied, both
1011 *seq1* and *seq2* must be instances of *seq_type* or a failure will
1012 be raised. If the sequences are different an error message is
1013 constructed that shows the difference between the two.
1014
Michael Foordabd91d52010-03-20 18:09:14 +00001015 If specified, *msg* will be used as the error message on failure.
Benjamin Peterson7fe73a12009-04-04 16:35:46 +00001016
1017 This method is used to implement :meth:`assertListEqual` and
1018 :meth:`assertTupleEqual`.
1019
Raymond Hettinger35a88362009-04-09 00:08:24 +00001020 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +00001021
Benjamin Peterson52baa292009-03-24 00:56:30 +00001022
Georg Brandl7f01a132009-09-16 15:58:14 +00001023 .. method:: assertRaises(exception, callable, *args, **kwds)
1024 failUnlessRaises(exception, callable, *args, **kwds)
1025 assertRaises(exception)
1026 failUnlessRaises(exception)
Benjamin Peterson52baa292009-03-24 00:56:30 +00001027
1028 Test that an exception is raised when *callable* is called with any
1029 positional or keyword arguments that are also passed to
1030 :meth:`assertRaises`. The test passes if *exception* is raised, is an
1031 error if another exception is raised, or fails if no exception is raised.
1032 To catch any of a group of exceptions, a tuple containing the exception
1033 classes may be passed as *exception*.
1034
Georg Brandl7f01a132009-09-16 15:58:14 +00001035 If only the *exception* argument is given, returns a context manager so
1036 that the code under test can be written inline rather than as a function::
Benjamin Petersonded31c42009-03-30 15:04:16 +00001037
Michael Foord41531f22010-02-05 21:13:40 +00001038 with self.assertRaises(SomeException):
Benjamin Petersonded31c42009-03-30 15:04:16 +00001039 do_something()
1040
Kristján Valur Jónsson92a653a2009-11-13 16:10:13 +00001041 The context manager will store the caught exception object in its
Ezio Melotti49008232010-02-08 21:57:48 +00001042 :attr:`exception` attribute. This can be useful if the intention
Michael Foord41531f22010-02-05 21:13:40 +00001043 is to perform additional checks on the exception raised::
Kristján Valur Jónsson92a653a2009-11-13 16:10:13 +00001044
Michael Foord41531f22010-02-05 21:13:40 +00001045 with self.assertRaises(SomeException) as cm:
1046 do_something()
1047
Ezio Melotti49008232010-02-08 21:57:48 +00001048 the_exception = cm.exception
Michael Foordb112a412010-02-05 23:32:33 +00001049 self.assertEqual(the_exception.error_code, 3)
Michael Foord41531f22010-02-05 21:13:40 +00001050
Ezio Melotti49008232010-02-08 21:57:48 +00001051 .. versionchanged:: 3.1
Benjamin Petersonded31c42009-03-30 15:04:16 +00001052 Added the ability to use :meth:`assertRaises` as a context manager.
Benjamin Peterson52baa292009-03-24 00:56:30 +00001053
Ezio Melotti49008232010-02-08 21:57:48 +00001054 .. versionchanged:: 3.2
1055 Added the :attr:`exception` attribute.
1056
Raymond Hettinger35a88362009-04-09 00:08:24 +00001057 .. deprecated:: 3.1
Georg Brandl89fad142010-03-14 10:23:39 +00001058 :meth:`failUnlessRaises`; use :meth:`assertRaises`.
Benjamin Peterson52baa292009-03-24 00:56:30 +00001059
Benjamin Peterson52baa292009-03-24 00:56:30 +00001060
Benjamin Peterson7fe73a12009-04-04 16:35:46 +00001061 .. method:: assertRaisesRegexp(exception, regexp[, callable, ...])
1062
1063 Like :meth:`assertRaises` but also tests that *regexp* matches
1064 on the string representation of the raised exception. *regexp* may be
1065 a regular expression object or a string containing a regular expression
1066 suitable for use by :func:`re.search`. Examples::
1067
1068 self.assertRaisesRegexp(ValueError, 'invalid literal for.*XYZ$',
1069 int, 'XYZ')
1070
1071 or::
1072
1073 with self.assertRaisesRegexp(ValueError, 'literal'):
1074 int('XYZ')
1075
Raymond Hettinger35a88362009-04-09 00:08:24 +00001076 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +00001077
1078
Georg Brandl7f01a132009-09-16 15:58:14 +00001079 .. method:: assertIsNone(expr, msg=None)
Benjamin Peterson7fe73a12009-04-04 16:35:46 +00001080
1081 This signals a test failure if *expr* is not None.
1082
Raymond Hettinger35a88362009-04-09 00:08:24 +00001083 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +00001084
1085
Georg Brandl7f01a132009-09-16 15:58:14 +00001086 .. method:: assertIsNotNone(expr, msg=None)
Benjamin Peterson7fe73a12009-04-04 16:35:46 +00001087
1088 The inverse of the :meth:`assertIsNone` method.
1089 This signals a test failure if *expr* is None.
1090
Raymond Hettinger35a88362009-04-09 00:08:24 +00001091 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +00001092
1093
Georg Brandl7f01a132009-09-16 15:58:14 +00001094 .. method:: assertIs(expr1, expr2, msg=None)
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +00001095
1096 This signals a test failure if *expr1* and *expr2* don't evaluate to the same
1097 object.
1098
Georg Brandl705d9d52009-05-05 09:29:50 +00001099 .. versionadded:: 3.1
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +00001100
1101
Georg Brandl7f01a132009-09-16 15:58:14 +00001102 .. method:: assertIsNot(expr1, expr2, msg=None)
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +00001103
1104 The inverse of the :meth:`assertIs` method.
1105 This signals a test failure if *expr1* and *expr2* evaluate to the same
1106 object.
1107
Georg Brandl705d9d52009-05-05 09:29:50 +00001108 .. versionadded:: 3.1
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +00001109
1110
Benjamin Peterson6e8c7572009-10-04 20:19:21 +00001111 .. method:: assertIsInstance(obj, cls[, msg])
1112
1113 This signals a test failure if *obj* is not an instance of *cls* (which
1114 can be a class or a tuple of classes, as supported by :func:`isinstance`).
1115
1116 .. versionadded:: 3.2
1117
1118
1119 .. method:: assertNotIsInstance(obj, cls[, msg])
1120
1121 The inverse of the :meth:`assertIsInstance` method. This signals a test
1122 failure if *obj* is an instance of *cls*.
1123
1124 .. versionadded:: 3.2
1125
1126
Georg Brandl7f01a132009-09-16 15:58:14 +00001127 .. method:: assertFalse(expr, msg=None)
1128 failIf(expr, msg=None)
Benjamin Peterson7fe73a12009-04-04 16:35:46 +00001129
1130 The inverse of the :meth:`assertTrue` method is the :meth:`assertFalse` method.
Benjamin Peterson52baa292009-03-24 00:56:30 +00001131 This signals a test failure if *expr* is true, with *msg* or :const:`None`
1132 for the error message.
1133
Raymond Hettinger35a88362009-04-09 00:08:24 +00001134 .. deprecated:: 3.1
Georg Brandl89fad142010-03-14 10:23:39 +00001135 :meth:`failIf`; use :meth:`assertFalse`.
Benjamin Peterson7fe73a12009-04-04 16:35:46 +00001136
Benjamin Peterson52baa292009-03-24 00:56:30 +00001137
Georg Brandl7f01a132009-09-16 15:58:14 +00001138 .. method:: fail(msg=None)
Benjamin Peterson52baa292009-03-24 00:56:30 +00001139
1140 Signals a test failure unconditionally, with *msg* or :const:`None` for
1141 the error message.
1142
1143
1144 .. attribute:: failureException
1145
1146 This class attribute gives the exception raised by the test method. If a
1147 test framework needs to use a specialized exception, possibly to carry
1148 additional information, it must subclass this exception in order to "play
1149 fair" with the framework. The initial value of this attribute is
1150 :exc:`AssertionError`.
1151
Benjamin Peterson7fe73a12009-04-04 16:35:46 +00001152
1153 .. attribute:: longMessage
1154
1155 If set to True then any explicit failure message you pass in to the
1156 assert methods will be appended to the end of the normal failure message.
1157 The normal messages contain useful information about the objects involved,
1158 for example the message from assertEqual shows you the repr of the two
1159 unequal objects. Setting this attribute to True allows you to have a
1160 custom error message in addition to the normal one.
1161
1162 This attribute defaults to False, meaning that a custom message passed
1163 to an assert method will silence the normal message.
1164
1165 The class setting can be overridden in individual tests by assigning an
1166 instance attribute to True or False before calling the assert methods.
1167
Raymond Hettinger35a88362009-04-09 00:08:24 +00001168 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +00001169
1170
Michael Foord98b3e762010-06-05 21:59:55 +00001171 .. attribute:: maxDiff
1172
1173 This attribute controls the maximum length of diffs output by assert
1174 methods that report diffs on failure. It defaults to 80*8 characters.
1175 Assert methods affected by this attribute are
1176 :meth:`assertSequenceEqual` (including all the sequence comparison
1177 methods that delegate to it), :meth:`assertDictEqual` and
1178 :meth:`assertMultiLineEqual`.
1179
1180 Setting ``maxDiff`` to None means that there is no maximum length of
1181 diffs.
1182
1183 .. versionadded:: 3.2
1184
1185
Benjamin Peterson52baa292009-03-24 00:56:30 +00001186 Testing frameworks can use the following methods to collect information on
1187 the test:
1188
1189
1190 .. method:: countTestCases()
1191
1192 Return the number of tests represented by this test object. For
1193 :class:`TestCase` instances, this will always be ``1``.
1194
1195
1196 .. method:: defaultTestResult()
1197
1198 Return an instance of the test result class that should be used for this
1199 test case class (if no other result instance is provided to the
1200 :meth:`run` method).
1201
1202 For :class:`TestCase` instances, this will always be an instance of
1203 :class:`TestResult`; subclasses of :class:`TestCase` should override this
1204 as necessary.
1205
1206
1207 .. method:: id()
1208
1209 Return a string identifying the specific test case. This is usually the
1210 full name of the test method, including the module and class name.
1211
1212
1213 .. method:: shortDescription()
1214
Benjamin Peterson7fe73a12009-04-04 16:35:46 +00001215 Returns a description of the test, or :const:`None` if no description
1216 has been provided. The default implementation of this method
1217 returns the first line of the test method's docstring, if available,
Michael Foord34c94622010-02-10 15:51:42 +00001218 or :const:`None`.
Benjamin Peterson7fe73a12009-04-04 16:35:46 +00001219
Michael Foord34c94622010-02-10 15:51:42 +00001220 .. versionchanged:: 3.1,3.2
1221 In 3.1 this was changed to add the test name to the short description
1222 even in the presence of a docstring. This caused compatibility issues
1223 with unittest extensions and adding the test name was moved to the
1224 :class:`TextTestResult`.
Benjamin Peterson7fe73a12009-04-04 16:35:46 +00001225
1226 .. method:: addTypeEqualityFunc(typeobj, function)
1227
1228 Registers a type specific :meth:`assertEqual` equality checking
1229 function to be called by :meth:`assertEqual` when both objects it has
1230 been asked to compare are exactly *typeobj* (not subclasses).
1231 *function* must take two positional arguments and a third msg=None
1232 keyword argument just as :meth:`assertEqual` does. It must raise
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +00001233 ``self.failureException`` when inequality between the first two
Benjamin Peterson7fe73a12009-04-04 16:35:46 +00001234 parameters is detected.
1235
1236 One good use of custom equality checking functions for a type
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +00001237 is to raise ``self.failureException`` with an error message useful
1238 for debugging the problem by explaining the inequalities in detail.
Benjamin Peterson7fe73a12009-04-04 16:35:46 +00001239
Raymond Hettinger35a88362009-04-09 00:08:24 +00001240 .. versionadded:: 3.1
Georg Brandl116aa622007-08-15 14:28:22 +00001241
1242
Georg Brandl7f01a132009-09-16 15:58:14 +00001243 .. method:: addCleanup(function, *args, **kwargs)
Benjamin Peterson25c95f12009-05-08 20:42:26 +00001244
1245 Add a function to be called after :meth:`tearDown` to cleanup resources
1246 used during the test. Functions will be called in reverse order to the
1247 order they are added (LIFO). They are called with any arguments and
1248 keyword arguments passed into :meth:`addCleanup` when they are
1249 added.
1250
1251 If :meth:`setUp` fails, meaning that :meth:`tearDown` is not called,
1252 then any cleanup functions added will still be called.
1253
Georg Brandl853947a2010-01-31 18:53:23 +00001254 .. versionadded:: 3.2
Benjamin Peterson25c95f12009-05-08 20:42:26 +00001255
1256
1257 .. method:: doCleanups()
1258
Barry Warsaw0c9fd632010-04-12 14:50:57 +00001259 This method is called unconditionally after :meth:`tearDown`, or
Benjamin Peterson25c95f12009-05-08 20:42:26 +00001260 after :meth:`setUp` if :meth:`setUp` raises an exception.
1261
1262 It is responsible for calling all the cleanup functions added by
1263 :meth:`addCleanup`. If you need cleanup functions to be called
1264 *prior* to :meth:`tearDown` then you can call :meth:`doCleanups`
1265 yourself.
1266
1267 :meth:`doCleanups` pops methods off the stack of cleanup
1268 functions one at a time, so it can be called at any time.
1269
Georg Brandl853947a2010-01-31 18:53:23 +00001270 .. versionadded:: 3.2
Benjamin Peterson25c95f12009-05-08 20:42:26 +00001271
1272
Georg Brandl7f01a132009-09-16 15:58:14 +00001273.. class:: FunctionTestCase(testFunc, setUp=None, tearDown=None, description=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001274
1275 This class implements the portion of the :class:`TestCase` interface which
Benjamin Petersond2397752009-06-27 23:45:02 +00001276 allows the test runner to drive the test, but does not provide the methods
1277 which test code can use to check and report errors. This is used to create
1278 test cases using legacy test code, allowing it to be integrated into a
1279 :mod:`unittest`-based test framework.
Georg Brandl116aa622007-08-15 14:28:22 +00001280
1281
Benjamin Peterson52baa292009-03-24 00:56:30 +00001282.. _testsuite-objects:
1283
Benjamin Peterson52baa292009-03-24 00:56:30 +00001284Grouping tests
1285~~~~~~~~~~~~~~
1286
Georg Brandl7f01a132009-09-16 15:58:14 +00001287.. class:: TestSuite(tests=())
Georg Brandl116aa622007-08-15 14:28:22 +00001288
1289 This class represents an aggregation of individual tests cases and test suites.
1290 The class presents the interface needed by the test runner to allow it to be run
1291 as any other test case. Running a :class:`TestSuite` instance is the same as
1292 iterating over the suite, running each test individually.
1293
1294 If *tests* is given, it must be an iterable of individual test cases or other
1295 test suites that will be used to build the suite initially. Additional methods
1296 are provided to add test cases and suites to the collection later on.
1297
Benjamin Peterson14a3dd72009-05-25 00:51:58 +00001298 :class:`TestSuite` objects behave much like :class:`TestCase` objects, except
1299 they do not actually implement a test. Instead, they are used to aggregate
1300 tests into groups of tests that should be run together. Some additional
1301 methods are available to add tests to :class:`TestSuite` instances:
Benjamin Peterson52baa292009-03-24 00:56:30 +00001302
1303
1304 .. method:: TestSuite.addTest(test)
1305
1306 Add a :class:`TestCase` or :class:`TestSuite` to the suite.
1307
1308
1309 .. method:: TestSuite.addTests(tests)
1310
1311 Add all the tests from an iterable of :class:`TestCase` and :class:`TestSuite`
1312 instances to this test suite.
1313
Benjamin Petersond2397752009-06-27 23:45:02 +00001314 This is equivalent to iterating over *tests*, calling :meth:`addTest` for
1315 each element.
Benjamin Peterson52baa292009-03-24 00:56:30 +00001316
1317 :class:`TestSuite` shares the following methods with :class:`TestCase`:
1318
1319
1320 .. method:: run(result)
1321
1322 Run the tests associated with this suite, collecting the result into the
1323 test result object passed as *result*. Note that unlike
1324 :meth:`TestCase.run`, :meth:`TestSuite.run` requires the result object to
1325 be passed in.
1326
1327
1328 .. method:: debug()
1329
1330 Run the tests associated with this suite without collecting the
1331 result. This allows exceptions raised by the test to be propagated to the
1332 caller and can be used to support running tests under a debugger.
1333
1334
1335 .. method:: countTestCases()
1336
1337 Return the number of tests represented by this test object, including all
1338 individual tests and sub-suites.
1339
Benjamin Peterson25c95f12009-05-08 20:42:26 +00001340
1341 .. method:: __iter__()
1342
1343 Tests grouped by a :class:`TestSuite` are always accessed by iteration.
1344 Subclasses can lazily provide tests by overriding :meth:`__iter__`. Note
1345 that this method maybe called several times on a single suite
1346 (for example when counting tests or comparing for equality)
1347 so the tests returned must be the same for repeated iterations.
1348
Georg Brandl853947a2010-01-31 18:53:23 +00001349 .. versionchanged:: 3.2
Benjamin Peterson25c95f12009-05-08 20:42:26 +00001350 In earlier versions the :class:`TestSuite` accessed tests directly rather
1351 than through iteration, so overriding :meth:`__iter__` wasn't sufficient
1352 for providing tests.
1353
Benjamin Peterson52baa292009-03-24 00:56:30 +00001354 In the typical usage of a :class:`TestSuite` object, the :meth:`run` method
1355 is invoked by a :class:`TestRunner` rather than by the end-user test harness.
1356
1357
Benjamin Peterson52baa292009-03-24 00:56:30 +00001358Loading and running tests
1359~~~~~~~~~~~~~~~~~~~~~~~~~
1360
Georg Brandl116aa622007-08-15 14:28:22 +00001361.. class:: TestLoader()
1362
Benjamin Peterson52baa292009-03-24 00:56:30 +00001363 The :class:`TestLoader` class is used to create test suites from classes and
1364 modules. Normally, there is no need to create an instance of this class; the
1365 :mod:`unittest` module provides an instance that can be shared as
1366 ``unittest.defaultTestLoader``. Using a subclass or instance, however, allows
1367 customization of some configurable properties.
1368
1369 :class:`TestLoader` objects have the following methods:
Georg Brandl116aa622007-08-15 14:28:22 +00001370
Michael Foordabd91d52010-03-20 18:09:14 +00001371a
Benjamin Peterson52baa292009-03-24 00:56:30 +00001372 .. method:: loadTestsFromTestCase(testCaseClass)
Georg Brandl116aa622007-08-15 14:28:22 +00001373
Benjamin Peterson52baa292009-03-24 00:56:30 +00001374 Return a suite of all tests cases contained in the :class:`TestCase`\ -derived
1375 :class:`testCaseClass`.
1376
1377
1378 .. method:: loadTestsFromModule(module)
1379
1380 Return a suite of all tests cases contained in the given module. This
1381 method searches *module* for classes derived from :class:`TestCase` and
1382 creates an instance of the class for each test method defined for the
1383 class.
1384
Georg Brandle720c0a2009-04-27 16:20:50 +00001385 .. note::
Benjamin Peterson52baa292009-03-24 00:56:30 +00001386
1387 While using a hierarchy of :class:`TestCase`\ -derived classes can be
1388 convenient in sharing fixtures and helper functions, defining test
1389 methods on base classes that are not intended to be instantiated
1390 directly does not play well with this method. Doing so, however, can
1391 be useful when the fixtures are different and defined in subclasses.
1392
Benjamin Petersond2397752009-06-27 23:45:02 +00001393 If a module provides a ``load_tests`` function it will be called to
1394 load the tests. This allows modules to customize test loading.
1395 This is the `load_tests protocol`_.
1396
Georg Brandl853947a2010-01-31 18:53:23 +00001397 .. versionchanged:: 3.2
Benjamin Petersond2397752009-06-27 23:45:02 +00001398 Support for ``load_tests`` added.
1399
Benjamin Peterson52baa292009-03-24 00:56:30 +00001400
Georg Brandl7f01a132009-09-16 15:58:14 +00001401 .. method:: loadTestsFromName(name, module=None)
Benjamin Peterson52baa292009-03-24 00:56:30 +00001402
1403 Return a suite of all tests cases given a string specifier.
1404
1405 The specifier *name* is a "dotted name" that may resolve either to a
1406 module, a test case class, a test method within a test case class, a
1407 :class:`TestSuite` instance, or a callable object which returns a
1408 :class:`TestCase` or :class:`TestSuite` instance. These checks are
1409 applied in the order listed here; that is, a method on a possible test
1410 case class will be picked up as "a test method within a test case class",
1411 rather than "a callable object".
1412
1413 For example, if you have a module :mod:`SampleTests` containing a
1414 :class:`TestCase`\ -derived class :class:`SampleTestCase` with three test
1415 methods (:meth:`test_one`, :meth:`test_two`, and :meth:`test_three`), the
Benjamin Petersond2397752009-06-27 23:45:02 +00001416 specifier ``'SampleTests.SampleTestCase'`` would cause this method to
1417 return a suite which will run all three test methods. Using the specifier
1418 ``'SampleTests.SampleTestCase.test_two'`` would cause it to return a test
1419 suite which will run only the :meth:`test_two` test method. The specifier
1420 can refer to modules and packages which have not been imported; they will
1421 be imported as a side-effect.
Benjamin Peterson52baa292009-03-24 00:56:30 +00001422
1423 The method optionally resolves *name* relative to the given *module*.
1424
1425
Georg Brandl7f01a132009-09-16 15:58:14 +00001426 .. method:: loadTestsFromNames(names, module=None)
Benjamin Peterson52baa292009-03-24 00:56:30 +00001427
1428 Similar to :meth:`loadTestsFromName`, but takes a sequence of names rather
1429 than a single name. The return value is a test suite which supports all
1430 the tests defined for each name.
1431
1432
1433 .. method:: getTestCaseNames(testCaseClass)
1434
1435 Return a sorted sequence of method names found within *testCaseClass*;
1436 this should be a subclass of :class:`TestCase`.
1437
Benjamin Petersond2397752009-06-27 23:45:02 +00001438
1439 .. method:: discover(start_dir, pattern='test*.py', top_level_dir=None)
1440
1441 Find and return all test modules from the specified start directory,
1442 recursing into subdirectories to find them. Only test files that match
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +00001443 *pattern* will be loaded. (Using shell style pattern matching.) Only
1444 module names that are importable (i.e. are valid Python identifiers) will
1445 be loaded.
Benjamin Petersond2397752009-06-27 23:45:02 +00001446
1447 All test modules must be importable from the top level of the project. If
1448 the start directory is not the top level directory then the top level
1449 directory must be specified separately.
1450
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +00001451 If importing a module fails, for example due to a syntax error, then this
1452 will be recorded as a single error and discovery will continue.
1453
Benjamin Petersond2397752009-06-27 23:45:02 +00001454 If a test package name (directory with :file:`__init__.py`) matches the
1455 pattern then the package will be checked for a ``load_tests``
1456 function. If this exists then it will be called with *loader*, *tests*,
1457 *pattern*.
1458
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +00001459 If load_tests exists then discovery does *not* recurse into the package,
Benjamin Petersond2397752009-06-27 23:45:02 +00001460 ``load_tests`` is responsible for loading all tests in the package.
1461
1462 The pattern is deliberately not stored as a loader attribute so that
1463 packages can continue discovery themselves. *top_level_dir* is stored so
1464 ``load_tests`` does not need to pass this argument in to
1465 ``loader.discover()``.
1466
Benjamin Petersonb48af542010-04-11 20:43:16 +00001467 *start_dir* can be a dotted module name as well as a directory.
1468
Georg Brandl853947a2010-01-31 18:53:23 +00001469 .. versionadded:: 3.2
1470
Benjamin Petersond2397752009-06-27 23:45:02 +00001471
Benjamin Peterson52baa292009-03-24 00:56:30 +00001472 The following attributes of a :class:`TestLoader` can be configured either by
1473 subclassing or assignment on an instance:
1474
1475
1476 .. attribute:: testMethodPrefix
1477
1478 String giving the prefix of method names which will be interpreted as test
1479 methods. The default value is ``'test'``.
1480
1481 This affects :meth:`getTestCaseNames` and all the :meth:`loadTestsFrom\*`
1482 methods.
1483
1484
1485 .. attribute:: sortTestMethodsUsing
1486
1487 Function to be used to compare method names when sorting them in
1488 :meth:`getTestCaseNames` and all the :meth:`loadTestsFrom\*` methods.
1489
1490
1491 .. attribute:: suiteClass
1492
1493 Callable object that constructs a test suite from a list of tests. No
1494 methods on the resulting object are needed. The default value is the
1495 :class:`TestSuite` class.
1496
1497 This affects all the :meth:`loadTestsFrom\*` methods.
1498
1499
Benjamin Peterson52baa292009-03-24 00:56:30 +00001500.. class:: TestResult
1501
1502 This class is used to compile information about which tests have succeeded
1503 and which have failed.
1504
1505 A :class:`TestResult` object stores the results of a set of tests. The
1506 :class:`TestCase` and :class:`TestSuite` classes ensure that results are
1507 properly recorded; test authors do not need to worry about recording the
1508 outcome of tests.
1509
1510 Testing frameworks built on top of :mod:`unittest` may want access to the
1511 :class:`TestResult` object generated by running a set of tests for reporting
1512 purposes; a :class:`TestResult` instance is returned by the
1513 :meth:`TestRunner.run` method for this purpose.
1514
1515 :class:`TestResult` instances have the following attributes that will be of
1516 interest when inspecting the results of running a set of tests:
1517
1518
1519 .. attribute:: errors
1520
1521 A list containing 2-tuples of :class:`TestCase` instances and strings
1522 holding formatted tracebacks. Each tuple represents a test which raised an
1523 unexpected exception.
1524
Benjamin Peterson52baa292009-03-24 00:56:30 +00001525 .. attribute:: failures
1526
1527 A list containing 2-tuples of :class:`TestCase` instances and strings
1528 holding formatted tracebacks. Each tuple represents a test where a failure
1529 was explicitly signalled using the :meth:`TestCase.fail\*` or
1530 :meth:`TestCase.assert\*` methods.
1531
Benjamin Peterson52baa292009-03-24 00:56:30 +00001532 .. attribute:: skipped
1533
1534 A list containing 2-tuples of :class:`TestCase` instances and strings
1535 holding the reason for skipping the test.
1536
Benjamin Peterson70e32c82009-03-24 01:00:11 +00001537 .. versionadded:: 3.1
Benjamin Peterson52baa292009-03-24 00:56:30 +00001538
1539 .. attribute:: expectedFailures
1540
1541 A list contaning 2-tuples of :class:`TestCase` instances and strings
1542 holding formatted tracebacks. Each tuple represents a expected failures
1543 of the test case.
1544
1545 .. attribute:: unexpectedSuccesses
1546
1547 A list containing :class:`TestCase` instances that were marked as expected
1548 failures, but succeeded.
1549
1550 .. attribute:: shouldStop
1551
1552 Set to ``True`` when the execution of tests should stop by :meth:`stop`.
1553
1554
1555 .. attribute:: testsRun
1556
1557 The total number of tests run so far.
1558
1559
Benjamin Petersonb48af542010-04-11 20:43:16 +00001560 .. attribute:: buffer
1561
1562 If set to true, ``sys.stdout`` and ``sys.stderr`` will be buffered in between
1563 :meth:`startTest` and :meth:`stopTest` being called. Collected output will
1564 only be echoed onto the real ``sys.stdout`` and ``sys.stderr`` if the test
1565 fails or errors. Any output is also attached to the failure / error message.
1566
Ezio Melotti7afd3f52010-04-20 09:32:54 +00001567 .. versionadded:: 3.2
Benjamin Petersonb48af542010-04-11 20:43:16 +00001568
1569
1570 .. attribute:: failfast
1571
1572 If set to true :meth:`stop` will be called on the first failure or error,
1573 halting the test run.
1574
Ezio Melotti7afd3f52010-04-20 09:32:54 +00001575 .. versionadded:: 3.2
Benjamin Petersonb48af542010-04-11 20:43:16 +00001576
1577
Benjamin Peterson52baa292009-03-24 00:56:30 +00001578 .. method:: wasSuccessful()
1579
1580 Return :const:`True` if all tests run so far have passed, otherwise returns
1581 :const:`False`.
1582
1583
1584 .. method:: stop()
1585
1586 This method can be called to signal that the set of tests being run should
1587 be aborted by setting the :attr:`shouldStop` attribute to :const:`True`.
1588 :class:`TestRunner` objects should respect this flag and return without
1589 running any additional tests.
1590
1591 For example, this feature is used by the :class:`TextTestRunner` class to
1592 stop the test framework when the user signals an interrupt from the
1593 keyboard. Interactive tools which provide :class:`TestRunner`
1594 implementations can use this in a similar manner.
1595
1596 The following methods of the :class:`TestResult` class are used to maintain
1597 the internal data structures, and may be extended in subclasses to support
1598 additional reporting requirements. This is particularly useful in building
1599 tools which support interactive reporting while tests are being run.
1600
1601
1602 .. method:: startTest(test)
1603
1604 Called when the test case *test* is about to be run.
1605
Benjamin Peterson52baa292009-03-24 00:56:30 +00001606 .. method:: stopTest(test)
1607
1608 Called after the test case *test* has been executed, regardless of the
1609 outcome.
1610
Benjamin Peterson25c95f12009-05-08 20:42:26 +00001611 .. method:: startTestRun(test)
1612
1613 Called once before any tests are executed.
1614
Georg Brandl853947a2010-01-31 18:53:23 +00001615 .. versionadded:: 3.2
Benjamin Peterson25c95f12009-05-08 20:42:26 +00001616
1617
1618 .. method:: stopTestRun(test)
1619
Ezio Melotti176d6c42010-01-27 20:58:07 +00001620 Called once after all tests are executed.
Benjamin Peterson25c95f12009-05-08 20:42:26 +00001621
Georg Brandl853947a2010-01-31 18:53:23 +00001622 .. versionadded:: 3.2
Benjamin Peterson25c95f12009-05-08 20:42:26 +00001623
1624
Benjamin Peterson52baa292009-03-24 00:56:30 +00001625 .. method:: addError(test, err)
1626
1627 Called when the test case *test* raises an unexpected exception *err* is a
1628 tuple of the form returned by :func:`sys.exc_info`: ``(type, value,
1629 traceback)``.
1630
1631 The default implementation appends a tuple ``(test, formatted_err)`` to
1632 the instance's :attr:`errors` attribute, where *formatted_err* is a
1633 formatted traceback derived from *err*.
1634
1635
1636 .. method:: addFailure(test, err)
1637
Benjamin Petersond2397752009-06-27 23:45:02 +00001638 Called when the test case *test* signals a failure. *err* is a tuple of
1639 the form returned by :func:`sys.exc_info`: ``(type, value, traceback)``.
Benjamin Peterson52baa292009-03-24 00:56:30 +00001640
1641 The default implementation appends a tuple ``(test, formatted_err)`` to
1642 the instance's :attr:`failures` attribute, where *formatted_err* is a
1643 formatted traceback derived from *err*.
1644
1645
1646 .. method:: addSuccess(test)
1647
1648 Called when the test case *test* succeeds.
1649
1650 The default implementation does nothing.
1651
1652
1653 .. method:: addSkip(test, reason)
1654
1655 Called when the test case *test* is skipped. *reason* is the reason the
1656 test gave for skipping.
1657
1658 The default implementation appends a tuple ``(test, reason)`` to the
1659 instance's :attr:`skipped` attribute.
1660
1661
1662 .. method:: addExpectedFailure(test, err)
1663
1664 Called when the test case *test* fails, but was marked with the
1665 :func:`expectedFailure` decorator.
1666
1667 The default implementation appends a tuple ``(test, formatted_err)`` to
1668 the instance's :attr:`expectedFailures` attribute, where *formatted_err*
1669 is a formatted traceback derived from *err*.
1670
1671
1672 .. method:: addUnexpectedSuccess(test)
1673
1674 Called when the test case *test* was marked with the
1675 :func:`expectedFailure` decorator, but succeeded.
1676
1677 The default implementation appends the test to the instance's
1678 :attr:`unexpectedSuccesses` attribute.
Georg Brandl116aa622007-08-15 14:28:22 +00001679
Michael Foord34c94622010-02-10 15:51:42 +00001680.. class:: TextTestResult(stream, descriptions, verbosity)
1681
1682 A concrete implementation of :class:`TestResult` used by the
1683 :class:`TextTestRunner`.
1684
1685 .. versionadded:: 3.2
1686 This class was previously named ``_TextTestResult``. The old name still
1687 exists as an alias but is deprecated.
Georg Brandl116aa622007-08-15 14:28:22 +00001688
1689.. data:: defaultTestLoader
1690
1691 Instance of the :class:`TestLoader` class intended to be shared. If no
1692 customization of the :class:`TestLoader` is needed, this instance can be used
1693 instead of repeatedly creating new instances.
1694
1695
Michael Foord34c94622010-02-10 15:51:42 +00001696.. class:: TextTestRunner(stream=sys.stderr, descriptions=True, verbosity=1, runnerclass=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001697
1698 A basic test runner implementation which prints results on standard error. It
1699 has a few configurable parameters, but is essentially very simple. Graphical
1700 applications which run test suites should provide alternate implementations.
1701
Benjamin Peterson25c95f12009-05-08 20:42:26 +00001702 .. method:: _makeResult()
Georg Brandl116aa622007-08-15 14:28:22 +00001703
Benjamin Peterson25c95f12009-05-08 20:42:26 +00001704 This method returns the instance of ``TestResult`` used by :meth:`run`.
1705 It is not intended to be called directly, but can be overridden in
1706 subclasses to provide a custom ``TestResult``.
1707
Michael Foord34c94622010-02-10 15:51:42 +00001708 ``_makeResult()`` instantiates the class or callable passed in the
1709 ``TextTestRunner`` constructor as the ``resultclass`` argument. It
Benjamin Petersonb48af542010-04-11 20:43:16 +00001710 defaults to :class:`TextTestResult` if no ``resultclass`` is provided.
Michael Foord34c94622010-02-10 15:51:42 +00001711 The result class is instantiated with the following arguments::
1712
1713 stream, descriptions, verbosity
Benjamin Peterson25c95f12009-05-08 20:42:26 +00001714
Benjamin Petersonb48af542010-04-11 20:43:16 +00001715.. function:: main(module='__main__', defaultTest=None, argv=None, testRunner=None, testLoader=unittest.loader.defaultTestLoader, exit=True, verbosity=1, failfast=None, catchbreak=None, buffer=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001716
1717 A command-line program that runs a set of tests; this is primarily for making
1718 test modules conveniently executable. The simplest use for this function is to
1719 include the following line at the end of a test script::
1720
1721 if __name__ == '__main__':
1722 unittest.main()
1723
Benjamin Petersond2397752009-06-27 23:45:02 +00001724 You can run tests with more detailed information by passing in the verbosity
1725 argument::
1726
1727 if __name__ == '__main__':
1728 unittest.main(verbosity=2)
1729
Georg Brandl116aa622007-08-15 14:28:22 +00001730 The *testRunner* argument can either be a test runner class or an already
Benjamin Peterson25c95f12009-05-08 20:42:26 +00001731 created instance of it. By default ``main`` calls :func:`sys.exit` with
1732 an exit code indicating success or failure of the tests run.
1733
1734 ``main`` supports being used from the interactive interpreter by passing in the
1735 argument ``exit=False``. This displays the result on standard output without
1736 calling :func:`sys.exit`::
1737
1738 >>> from unittest import main
1739 >>> main(module='test_module', exit=False)
1740
Benjamin Petersonb48af542010-04-11 20:43:16 +00001741 The ``failfast``, ``catchbreak`` and ``buffer`` parameters have the same
1742 effect as the `failfast, catch and buffer command line options`_.
1743
Benjamin Peterson25c95f12009-05-08 20:42:26 +00001744 Calling ``main`` actually returns an instance of the ``TestProgram`` class.
1745 This stores the result of the tests run as the ``result`` attribute.
1746
Georg Brandl853947a2010-01-31 18:53:23 +00001747 .. versionchanged:: 3.2
Benjamin Petersonb48af542010-04-11 20:43:16 +00001748 The ``exit``, ``verbosity``, ``failfast``, ``catchbreak`` and ``buffer``
1749 parameters were added.
Benjamin Petersond2397752009-06-27 23:45:02 +00001750
1751
1752load_tests Protocol
1753###################
1754
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +00001755
Georg Brandl853947a2010-01-31 18:53:23 +00001756.. versionadded:: 3.2
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +00001757
1758
Benjamin Petersond2397752009-06-27 23:45:02 +00001759Modules or packages can customize how tests are loaded from them during normal
1760test runs or test discovery by implementing a function called ``load_tests``.
1761
1762If a test module defines ``load_tests`` it will be called by
1763:meth:`TestLoader.loadTestsFromModule` with the following arguments::
1764
1765 load_tests(loader, standard_tests, None)
1766
1767It should return a :class:`TestSuite`.
1768
1769*loader* is the instance of :class:`TestLoader` doing the loading.
1770*standard_tests* are the tests that would be loaded by default from the
1771module. It is common for test modules to only want to add or remove tests
1772from the standard set of tests.
1773The third argument is used when loading packages as part of test discovery.
1774
1775A typical ``load_tests`` function that loads tests from a specific set of
1776:class:`TestCase` classes may look like::
1777
1778 test_cases = (TestCase1, TestCase2, TestCase3)
1779
1780 def load_tests(loader, tests, pattern):
1781 suite = TestSuite()
1782 for test_class in test_cases:
1783 tests = loader.loadTestsFromTestCase(test_class)
1784 suite.addTests(tests)
1785 return suite
1786
1787If discovery is started, either from the command line or by calling
1788:meth:`TestLoader.discover`, with a pattern that matches a package
1789name then the package :file:`__init__.py` will be checked for ``load_tests``.
1790
1791.. note::
1792
Ezio Melotti0639d5a2009-12-19 23:26:38 +00001793 The default pattern is 'test*.py'. This matches all Python files
Benjamin Petersond2397752009-06-27 23:45:02 +00001794 that start with 'test' but *won't* match any test directories.
1795
1796 A pattern like 'test*' will match test packages as well as
1797 modules.
1798
1799If the package :file:`__init__.py` defines ``load_tests`` then it will be
1800called and discovery not continued into the package. ``load_tests``
1801is called with the following arguments::
1802
1803 load_tests(loader, standard_tests, pattern)
1804
1805This should return a :class:`TestSuite` representing all the tests
1806from the package. (``standard_tests`` will only contain tests
1807collected from :file:`__init__.py`.)
1808
1809Because the pattern is passed into ``load_tests`` the package is free to
1810continue (and potentially modify) test discovery. A 'do nothing'
1811``load_tests`` function for a test package would look like::
1812
1813 def load_tests(loader, standard_tests, pattern):
1814 # top level directory cached on loader instance
1815 this_dir = os.path.dirname(__file__)
1816 package_tests = loader.discover(start_dir=this_dir, pattern=pattern)
1817 standard_tests.addTests(package_tests)
1818 return standard_tests
Benjamin Petersonb48af542010-04-11 20:43:16 +00001819
1820
1821Class and Module Fixtures
1822-------------------------
1823
1824Class and module level fixtures are implemented in :class:`TestSuite`. When
1825the test suite encounters a test from a new class then :meth:`tearDownClass`
1826from the previous class (if there is one) is called, followed by
1827:meth:`setUpClass` from the new class.
1828
1829Similarly if a test is from a different module from the previous test then
1830``tearDownModule`` from the previous module is run, followed by
1831``setUpModule`` from the new module.
1832
1833After all the tests have run the final ``tearDownClass`` and
1834``tearDownModule`` are run.
1835
1836Note that shared fixtures do not play well with [potential] features like test
1837parallelization and they break test isolation. They should be used with care.
1838
1839The default ordering of tests created by the unittest test loaders is to group
1840all tests from the same modules and classes together. This will lead to
1841``setUpClass`` / ``setUpModule`` (etc) being called exactly once per class and
1842module. If you randomize the order, so that tests from different modules and
1843classes are adjacent to each other, then these shared fixture functions may be
1844called multiple times in a single test run.
1845
1846Shared fixtures are not intended to work with suites with non-standard
1847ordering. A ``BaseTestSuite`` still exists for frameworks that don't want to
1848support shared fixtures.
1849
1850If there are any exceptions raised during one of the shared fixture functions
1851the test is reported as an error. Because there is no corresponding test
1852instance an ``_ErrorHolder`` object (that has the same interface as a
1853:class:`TestCase`) is created to represent the error. If you are just using
1854the standard unittest test runner then this detail doesn't matter, but if you
1855are a framework author it may be relevant.
1856
1857
1858setUpClass and tearDownClass
1859~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1860
1861These must be implemented as class methods::
1862
1863 import unittest
1864
1865 class Test(unittest.TestCase):
1866 @classmethod
1867 def setUpClass(cls):
1868 cls._connection = createExpensiveConnectionObject()
1869
1870 @classmethod
1871 def tearDownClass(cls):
1872 cls._connection.destroy()
1873
1874If you want the ``setUpClass`` and ``tearDownClass`` on base classes called
1875then you must call up to them yourself. The implementations in
1876:class:`TestCase` are empty.
1877
1878If an exception is raised during a ``setUpClass`` then the tests in the class
1879are not run and the ``tearDownClass`` is not run. Skipped classes will not
Michael Foord98b3e762010-06-05 21:59:55 +00001880have ``setUpClass`` or ``tearDownClass`` run. If the exception is a
1881``SkipTest`` exception then the class will be reported as having been skipped
1882instead of as an error.
Benjamin Petersonb48af542010-04-11 20:43:16 +00001883
1884
1885setUpModule and tearDownModule
1886~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1887
1888These should be implemented as functions::
1889
1890 def setUpModule():
1891 createConnection()
1892
1893 def tearDownModule():
1894 closeConnection()
1895
1896If an exception is raised in a ``setUpModule`` then none of the tests in the
Michael Foord98b3e762010-06-05 21:59:55 +00001897module will be run and the ``tearDownModule`` will not be run. If the exception is a
1898``SkipTest`` exception then the module will be reported as having been skipped
1899instead of as an error.
Benjamin Petersonb48af542010-04-11 20:43:16 +00001900
1901
1902Signal Handling
1903---------------
1904
1905The -c / --catch command line option to unittest, along with the ``catchbreak``
1906parameter to :func:`unittest.main()`, provide more friendly handling of
1907control-c during a test run. With catch break behavior enabled control-c will
1908allow the currently running test to complete, and the test run will then end
1909and report all the results so far. A second control-c will raise a
1910``KeyboardInterrupt`` in the usual way.
1911
Michael Foordde4ceab2010-04-25 19:53:49 +00001912The control-c handling signal handler attempts to remain compatible with code or
1913tests that install their own :const:`signal.SIGINT` handler. If the ``unittest``
1914handler is called but *isn't* the installed :const:`signal.SIGINT` handler,
1915i.e. it has been replaced by the system under test and delegated to, then it
1916calls the default handler. This will normally be the expected behavior by code
1917that replaces an installed handler and delegates to it. For individual tests
1918that need ``unittest`` control-c handling disabled the :func:`removeHandler`
1919decorator can be used.
1920
1921There are a few utility functions for framework authors to enable control-c
1922handling functionality within test frameworks.
Benjamin Petersonb48af542010-04-11 20:43:16 +00001923
1924.. function:: installHandler()
1925
1926 Install the control-c handler. When a :const:`signal.SIGINT` is received
1927 (usually in response to the user pressing control-c) all registered results
1928 have :meth:`~TestResult.stop` called.
1929
Michael Foord469b1f02010-04-26 23:41:26 +00001930 .. versionadded:: 3.2
1931
Benjamin Petersonb48af542010-04-11 20:43:16 +00001932.. function:: registerResult(result)
1933
1934 Register a :class:`TestResult` object for control-c handling. Registering a
1935 result stores a weak reference to it, so it doesn't prevent the result from
1936 being garbage collected.
1937
Michael Foordde4ceab2010-04-25 19:53:49 +00001938 Registering a :class:`TestResult` object has no side-effects if control-c
1939 handling is not enabled, so test frameworks can unconditionally register
1940 all results they create independently of whether or not handling is enabled.
1941
Michael Foord469b1f02010-04-26 23:41:26 +00001942 .. versionadded:: 3.2
1943
Benjamin Petersonb48af542010-04-11 20:43:16 +00001944.. function:: removeResult(result)
1945
1946 Remove a registered result. Once a result has been removed then
1947 :meth:`~TestResult.stop` will no longer be called on that result object in
1948 response to a control-c.
1949
Michael Foord469b1f02010-04-26 23:41:26 +00001950 .. versionadded:: 3.2
1951
Michael Foordde4ceab2010-04-25 19:53:49 +00001952.. function:: removeHandler(function=None)
1953
1954 When called without arguments this function removes the control-c handler
1955 if it has been installed. This function can also be used as a test decorator
1956 to temporarily remove the handler whilst the test is being executed::
1957
1958 @unittest.removeHandler
1959 def test_signal_handling(self):
1960 ...
1961
Michael Foord469b1f02010-04-26 23:41:26 +00001962 .. versionadded:: 3.2
1963