blob: 06fd78176e0bfbee592813ece20320f8142c3901 [file] [log] [blame]
Georg Brandl8ec7f652007-08-15 14:28:01 +00001:mod:`unittest` --- Unit testing framework
2==========================================
3
4.. module:: unittest
5 :synopsis: Unit testing framework for Python.
6.. moduleauthor:: Steve Purcell <stephen_purcell@yahoo.com>
7.. sectionauthor:: Steve Purcell <stephen_purcell@yahoo.com>
8.. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org>
9.. sectionauthor:: Raymond Hettinger <python@rcn.com>
10
11
12.. versionadded:: 2.1
Benjamin Peterson692428e2009-03-23 21:50:21 +000013
Georg Brandl8ec7f652007-08-15 14:28:01 +000014The Python unit testing framework, sometimes referred to as "PyUnit," is a
15Python language version of JUnit, by Kent Beck and Erich Gamma. JUnit is, in
16turn, a Java version of Kent's Smalltalk testing framework. Each is the de
17facto standard unit testing framework for its respective language.
18
19:mod:`unittest` supports test automation, sharing of setup and shutdown code for
20tests, aggregation of tests into collections, and independence of the tests from
21the reporting framework. The :mod:`unittest` module provides classes that make
22it easy to support these qualities for a set of tests.
23
24To achieve this, :mod:`unittest` supports some important concepts:
25
26test fixture
27 A :dfn:`test fixture` represents the preparation needed to perform one or more
28 tests, and any associate cleanup actions. This may involve, for example,
29 creating temporary or proxy databases, directories, or starting a server
30 process.
31
32test case
33 A :dfn:`test case` is the smallest unit of testing. It checks for a specific
34 response to a particular set of inputs. :mod:`unittest` provides a base class,
35 :class:`TestCase`, which may be used to create new test cases.
36
37test suite
38 A :dfn:`test suite` is a collection of test cases, test suites, or both. It is
39 used to aggregate tests that should be executed together.
40
41test runner
42 A :dfn:`test runner` is a component which orchestrates the execution of tests
43 and provides the outcome to the user. The runner may use a graphical interface,
44 a textual interface, or return a special value to indicate the results of
45 executing the tests.
46
47The test case and test fixture concepts are supported through the
48:class:`TestCase` and :class:`FunctionTestCase` classes; the former should be
49used when creating new tests, and the latter can be used when integrating
50existing test code with a :mod:`unittest`\ -driven framework. When building test
Benjamin Peterson99721e02009-03-23 23:10:14 +000051fixtures using :class:`TestCase`, the :meth:`~TestCase.setUp` and
52:meth:`~TestCase.tearDown` methods can be overridden to provide initialization
53and cleanup for the fixture. With :class:`FunctionTestCase`, existing functions
54can be passed to the constructor for these purposes. When the test is run, the
55fixture initialization is run first; if it succeeds, the cleanup method is run
56after the test has been executed, regardless of the outcome of the test. Each
57instance of the :class:`TestCase` will only be used to run a single test method,
58so a new fixture is created for each test.
Georg Brandl8ec7f652007-08-15 14:28:01 +000059
60Test suites are implemented by the :class:`TestSuite` class. This class allows
61individual tests and test suites to be aggregated; when the suite is executed,
Benjamin Peterson176a56c2009-05-25 00:48:58 +000062all tests added directly to the suite and in "child" test suites are run.
Georg Brandl8ec7f652007-08-15 14:28:01 +000063
Benjamin Peterson99721e02009-03-23 23:10:14 +000064A test runner is an object that provides a single method,
65:meth:`~TestRunner.run`, which accepts a :class:`TestCase` or :class:`TestSuite`
66object as a parameter, and returns a result object. The class
67:class:`TestResult` is provided for use as the result object. :mod:`unittest`
68provides the :class:`TextTestRunner` as an example test runner which reports
69test results on the standard error stream by default. Alternate runners can be
70implemented for other environments (such as graphical environments) without any
71need to derive from a specific class.
Georg Brandl8ec7f652007-08-15 14:28:01 +000072
73
74.. seealso::
75
76 Module :mod:`doctest`
77 Another test-support module with a very different flavor.
78
Michael Foordba097ec2010-04-03 17:03:11 +000079 `unittest2: A backport of new unittest features for Python 2.4-2.6 <http://pypi.python.org/pypi/unittest2>`_
80 Many new features were added to unittest in Python 2.7, including test
81 discovery. unittest2 allows you to use these features with earlier
82 versions of Python.
83
Georg Brandld198b762009-05-31 14:15:25 +000084 `Simple Smalltalk Testing: With Patterns <http://www.XProgramming.com/testfram.htm>`_
Georg Brandl2fcd1732009-05-30 10:45:40 +000085 Kent Beck's original paper on testing frameworks using the pattern shared
86 by :mod:`unittest`.
Georg Brandl8ec7f652007-08-15 14:28:01 +000087
Georg Brandld198b762009-05-31 14:15:25 +000088 `Nose <http://code.google.com/p/python-nose/>`_ and `py.test <http://pytest.org>`_
Georg Brandl2fcd1732009-05-30 10:45:40 +000089 Third-party unittest frameworks with a lighter-weight syntax for writing
90 tests. For example, ``assert func(10) == 42``.
Raymond Hettinger21b617b2009-03-24 00:17:11 +000091
Michael Foordba097ec2010-04-03 17:03:11 +000092 `The Python Testing Tools Taxonomy <http://pycheesecake.org/wiki/PythonTestingToolsTaxonomy>`_
93 An extensive list of Python testing tools including functional testing
94 frameworks and mock object libraries.
Georg Brandl8ec7f652007-08-15 14:28:01 +000095
Michael Foordba097ec2010-04-03 17:03:11 +000096 `Testing in Python Mailing List <http://lists.idyll.org/listinfo/testing-in-python>`_
97 A special-interest-group for discussion of testing, and testing tools,
98 in Python.
Michael Foordb4a81c82009-05-29 20:33:46 +000099
Michael Foord5d31e052009-05-11 17:59:43 +0000100
Georg Brandl8ec7f652007-08-15 14:28:01 +0000101.. _unittest-minimal-example:
102
103Basic example
104-------------
105
106The :mod:`unittest` module provides a rich set of tools for constructing and
107running tests. This section demonstrates that a small subset of the tools
108suffice to meet the needs of most users.
109
110Here is a short script to test three functions from the :mod:`random` module::
111
112 import random
113 import unittest
114
115 class TestSequenceFunctions(unittest.TestCase):
116
117 def setUp(self):
118 self.seq = range(10)
119
Benjamin Peterson99721e02009-03-23 23:10:14 +0000120 def test_shuffle(self):
Georg Brandl8ec7f652007-08-15 14:28:01 +0000121 # make sure the shuffled sequence does not lose any elements
122 random.shuffle(self.seq)
123 self.seq.sort()
124 self.assertEqual(self.seq, range(10))
125
Raymond Hettinger08090bf2010-03-09 08:44:18 +0000126 # should raise an exception for an immutable sequence
127 self.assertRaises(TypeError, random.shuffle, (1,2,3))
128
Benjamin Peterson99721e02009-03-23 23:10:14 +0000129 def test_choice(self):
Georg Brandl8ec7f652007-08-15 14:28:01 +0000130 element = random.choice(self.seq)
Raymond Hettinger08090bf2010-03-09 08:44:18 +0000131 self.assertTrue(element in self.seq)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000132
Benjamin Peterson99721e02009-03-23 23:10:14 +0000133 def test_sample(self):
Raymond Hettinger08090bf2010-03-09 08:44:18 +0000134 with self.assertRaises(ValueError):
135 random.sample(self.seq, 20)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000136 for element in random.sample(self.seq, 5):
Raymond Hettinger08090bf2010-03-09 08:44:18 +0000137 self.assertTrue(element in self.seq)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000138
139 if __name__ == '__main__':
140 unittest.main()
141
Benjamin Peterson99721e02009-03-23 23:10:14 +0000142A testcase is created by subclassing :class:`unittest.TestCase`. The three
Georg Brandl8ec7f652007-08-15 14:28:01 +0000143individual tests are defined with methods whose names start with the letters
144``test``. This naming convention informs the test runner about which methods
145represent tests.
146
Benjamin Peterson99721e02009-03-23 23:10:14 +0000147The crux of each test is a call to :meth:`~TestCase.assertEqual` to check for an
Michael Foorddb43b5a2010-02-10 14:25:12 +0000148expected result; :meth:`~TestCase.assertTrue` to verify a condition; or
Benjamin Peterson99721e02009-03-23 23:10:14 +0000149:meth:`~TestCase.assertRaises` to verify that an expected exception gets raised.
150These methods are used instead of the :keyword:`assert` statement so the test
151runner can accumulate all test results and produce a report.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000152
Benjamin Peterson99721e02009-03-23 23:10:14 +0000153When a :meth:`~TestCase.setUp` method is defined, the test runner will run that
154method prior to each test. Likewise, if a :meth:`~TestCase.tearDown` method is
155defined, the test runner will invoke that method after each test. In the
156example, :meth:`~TestCase.setUp` was used to create a fresh sequence for each
157test.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000158
159The final block shows a simple way to run the tests. :func:`unittest.main`
160provides a command line interface to the test script. When run from the command
161line, the above script produces an output that looks like this::
162
163 ...
164 ----------------------------------------------------------------------
165 Ran 3 tests in 0.000s
166
167 OK
168
169Instead of :func:`unittest.main`, there are other ways to run the tests with a
170finer level of control, less terse output, and no requirement to be run from the
171command line. For example, the last two lines may be replaced with::
172
173 suite = unittest.TestLoader().loadTestsFromTestCase(TestSequenceFunctions)
174 unittest.TextTestRunner(verbosity=2).run(suite)
175
176Running the revised script from the interpreter or another script produces the
177following output::
178
Ezio Melotti68beef62010-02-28 03:11:07 +0000179 test_choice (__main__.TestSequenceFunctions) ... ok
180 test_sample (__main__.TestSequenceFunctions) ... ok
181 test_shuffle (__main__.TestSequenceFunctions) ... ok
Georg Brandl8ec7f652007-08-15 14:28:01 +0000182
183 ----------------------------------------------------------------------
184 Ran 3 tests in 0.110s
185
186 OK
187
188The above examples show the most commonly used :mod:`unittest` features which
189are sufficient to meet many everyday testing needs. The remainder of the
190documentation explores the full feature set from first principles.
191
Raymond Hettingerb09f1982009-05-29 21:20:41 +0000192
193.. _unittest-command-line-interface:
194
195Command Line Interface
196----------------------
197
198The unittest module can be used from the command line to run tests from
199modules, classes or even individual test methods::
200
201 python -m unittest test_module1 test_module2
202 python -m unittest test_module.TestClass
203 python -m unittest test_module.TestClass.test_method
204
205You can pass in a list with any combination of module names, and fully
206qualified class or method names.
207
208You can run tests with more detail (higher verbosity) by passing in the -v flag::
209
Ezio Melotti062d2b52009-12-19 22:41:49 +0000210 python -m unittest -v test_module
Raymond Hettingerb09f1982009-05-29 21:20:41 +0000211
212For a list of all the command line options::
213
214 python -m unittest -h
215
216.. versionchanged:: 2.7
217 In earlier versions it was only possible to run individual test methods and
218 not modules or classes.
219
Michael Foordba097ec2010-04-03 17:03:11 +0000220
221failfast, catch and buffer command line options
222~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
223
224unittest supports three command options.
225
Andrew M. Kuchlingfb759a22010-04-29 01:44:30 +0000226* :option:`-b` / :option:`--buffer`
Michael Foordba097ec2010-04-03 17:03:11 +0000227
Andrew M. Kuchlingfb759a22010-04-29 01:44:30 +0000228 The standard output and standard error streams are buffered during the test
Michael Foordba097ec2010-04-03 17:03:11 +0000229 run. Output during a passing test is discarded. Output is echoed normally
230 on test fail or error and is added to the failure messages.
231
Andrew M. Kuchlingfb759a22010-04-29 01:44:30 +0000232* :option:`-c` / :option:`--catch`
233
234 Control-C during the test run waits for the current test to end and then
235 reports all the results so far. A second control-C raises the normal
236 :exc:`KeyboardInterrupt` exception.
237
238 See `Signal Handling`_ for the functions that provide this functionality.
239
240* :option:`-f` / :option:`--failfast`
241
242 Stop the test run on the first error or failure.
243
Michael Foordba097ec2010-04-03 17:03:11 +0000244.. versionadded:: 2.7
Andrew M. Kuchlingfb759a22010-04-29 01:44:30 +0000245 The command line options ``-c``, ``-b`` and ``-f`` were added.
Michael Foordba097ec2010-04-03 17:03:11 +0000246
Raymond Hettingerb09f1982009-05-29 21:20:41 +0000247The command line can also be used for test discovery, for running all of the
248tests in a project or just a subset.
249
250
251.. _unittest-test-discovery:
252
253Test Discovery
254--------------
255
256.. versionadded:: 2.7
257
258Unittest supports simple test discovery. For a project's tests to be
259compatible with test discovery they must all be importable from the top level
260directory of the project (in other words, they must all be in Python packages).
261
262Test discovery is implemented in :meth:`TestLoader.discover`, but can also be
263used from the command line. The basic command line usage is::
264
265 cd project_directory
266 python -m unittest discover
267
268The ``discover`` sub-command has the following options:
269
270 -v, --verbose Verbose output
271 -s directory Directory to start discovery ('.' default)
272 -p pattern Pattern to match test files ('test*.py' default)
273 -t directory Top level directory of project (default to
274 start directory)
275
Andrew M. Kuchling60383182010-04-30 01:32:47 +0000276The :option:`-s`, :option:`-p`, and :option:`-t` options can be passed in
277as positional arguments in that order. The following two command lines
278are equivalent::
Raymond Hettingerb09f1982009-05-29 21:20:41 +0000279
Ezio Melotti7b4e02c2010-01-27 20:25:11 +0000280 python -m unittest discover -s project_directory -p '*_test.py'
281 python -m unittest discover project_directory '*_test.py'
Raymond Hettingerb09f1982009-05-29 21:20:41 +0000282
Michael Foord8851b712010-05-08 15:09:37 +0000283As well as being a path it is possible to pass a package name, for example
284``myproject.subpackage.test``, as the start directory. The package name you
285supply will then be imported and its location on the filesystem will be used
286as the start directory.
287
288.. caution::
289
290 Test discovery loads tests by importing them. Once test discovery has
291 found all the test files from the start directory you specify it turns the
292 paths into package names to import. For example `foo/bar/baz.py` will be
293 imported as ``foo.bar.baz``.
294
295 If you have a package installed globally and attempt test discovery on
296 a different copy of the package then the import *could* happen from the
297 wrong place. If this happens test discovery will warn you and exit.
298
299 If you supply the start directory as a package name rather than a
300 path to a directory then discover assumes that whichever location it
301 imports from is the location you intended, so you will not get the
302 warning.
303
Raymond Hettingerb09f1982009-05-29 21:20:41 +0000304Test modules and packages can customize test loading and discovery by through
305the `load_tests protocol`_.
306
307
Georg Brandl8ec7f652007-08-15 14:28:01 +0000308.. _organizing-tests:
309
310Organizing test code
311--------------------
312
313The basic building blocks of unit testing are :dfn:`test cases` --- single
314scenarios that must be set up and checked for correctness. In :mod:`unittest`,
315test cases are represented by instances of :mod:`unittest`'s :class:`TestCase`
316class. To make your own test cases you must write subclasses of
317:class:`TestCase`, or use :class:`FunctionTestCase`.
318
319An instance of a :class:`TestCase`\ -derived class is an object that can
320completely run a single test method, together with optional set-up and tidy-up
321code.
322
323The testing code of a :class:`TestCase` instance should be entirely self
324contained, such that it can be run either in isolation or in arbitrary
325combination with any number of other test cases.
326
Benjamin Peterson99721e02009-03-23 23:10:14 +0000327The simplest :class:`TestCase` subclass will simply override the
328:meth:`~TestCase.runTest` method in order to perform specific testing code::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000329
330 import unittest
331
332 class DefaultWidgetSizeTestCase(unittest.TestCase):
333 def runTest(self):
334 widget = Widget('The widget')
335 self.assertEqual(widget.size(), (50, 50), 'incorrect default size')
336
Gregory P. Smith28399852009-03-31 16:54:10 +0000337Note that in order to test something, we use the one of the :meth:`assert\*`
Georg Brandl2fcd1732009-05-30 10:45:40 +0000338methods provided by the :class:`TestCase` base class. If the test fails, an
339exception will be raised, and :mod:`unittest` will identify the test case as a
340:dfn:`failure`. Any other exceptions will be treated as :dfn:`errors`. This
341helps you identify where the problem is: :dfn:`failures` are caused by incorrect
342results - a 5 where you expected a 6. :dfn:`Errors` are caused by incorrect
343code - e.g., a :exc:`TypeError` caused by an incorrect function call.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000344
345The way to run a test case will be described later. For now, note that to
346construct an instance of such a test case, we call its constructor without
347arguments::
348
349 testCase = DefaultWidgetSizeTestCase()
350
351Now, such test cases can be numerous, and their set-up can be repetitive. In
352the above case, constructing a :class:`Widget` in each of 100 Widget test case
353subclasses would mean unsightly duplication.
354
355Luckily, we can factor out such set-up code by implementing a method called
Benjamin Peterson99721e02009-03-23 23:10:14 +0000356:meth:`~TestCase.setUp`, which the testing framework will automatically call for
357us when we run the test::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000358
359 import unittest
360
361 class SimpleWidgetTestCase(unittest.TestCase):
362 def setUp(self):
363 self.widget = Widget('The widget')
364
365 class DefaultWidgetSizeTestCase(SimpleWidgetTestCase):
366 def runTest(self):
Ezio Melotti85ee3e12010-02-04 20:06:38 +0000367 self.assertEqual(self.widget.size(), (50,50),
368 'incorrect default size')
Georg Brandl8ec7f652007-08-15 14:28:01 +0000369
370 class WidgetResizeTestCase(SimpleWidgetTestCase):
371 def runTest(self):
372 self.widget.resize(100,150)
Ezio Melotti85ee3e12010-02-04 20:06:38 +0000373 self.assertEqual(self.widget.size(), (100,150),
374 'wrong size after resize')
Georg Brandl8ec7f652007-08-15 14:28:01 +0000375
Benjamin Peterson99721e02009-03-23 23:10:14 +0000376If the :meth:`~TestCase.setUp` method raises an exception while the test is
377running, the framework will consider the test to have suffered an error, and the
378:meth:`~TestCase.runTest` method will not be executed.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000379
Benjamin Peterson99721e02009-03-23 23:10:14 +0000380Similarly, we can provide a :meth:`~TestCase.tearDown` method that tidies up
381after the :meth:`~TestCase.runTest` method has been run::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000382
383 import unittest
384
385 class SimpleWidgetTestCase(unittest.TestCase):
386 def setUp(self):
387 self.widget = Widget('The widget')
388
389 def tearDown(self):
390 self.widget.dispose()
391 self.widget = None
392
Benjamin Peterson99721e02009-03-23 23:10:14 +0000393If :meth:`~TestCase.setUp` succeeded, the :meth:`~TestCase.tearDown` method will
394be run whether :meth:`~TestCase.runTest` succeeded or not.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000395
396Such a working environment for the testing code is called a :dfn:`fixture`.
397
398Often, many small test cases will use the same fixture. In this case, we would
399end up subclassing :class:`SimpleWidgetTestCase` into many small one-method
400classes such as :class:`DefaultWidgetSizeTestCase`. This is time-consuming and
Georg Brandl8ec7f652007-08-15 14:28:01 +0000401discouraging, so in the same vein as JUnit, :mod:`unittest` provides a simpler
402mechanism::
403
404 import unittest
405
406 class WidgetTestCase(unittest.TestCase):
407 def setUp(self):
408 self.widget = Widget('The widget')
409
410 def tearDown(self):
411 self.widget.dispose()
412 self.widget = None
413
Ezio Melotti68beef62010-02-28 03:11:07 +0000414 def test_default_size(self):
Ezio Melotti85ee3e12010-02-04 20:06:38 +0000415 self.assertEqual(self.widget.size(), (50,50),
416 'incorrect default size')
Georg Brandl8ec7f652007-08-15 14:28:01 +0000417
Ezio Melotti68beef62010-02-28 03:11:07 +0000418 def test_resize(self):
Georg Brandl8ec7f652007-08-15 14:28:01 +0000419 self.widget.resize(100,150)
Ezio Melotti85ee3e12010-02-04 20:06:38 +0000420 self.assertEqual(self.widget.size(), (100,150),
421 'wrong size after resize')
Georg Brandl8ec7f652007-08-15 14:28:01 +0000422
Benjamin Peterson99721e02009-03-23 23:10:14 +0000423Here we have not provided a :meth:`~TestCase.runTest` method, but have instead
424provided two different test methods. Class instances will now each run one of
Ezio Melotti68beef62010-02-28 03:11:07 +0000425the :meth:`test_\*` methods, with ``self.widget`` created and destroyed
Benjamin Peterson99721e02009-03-23 23:10:14 +0000426separately for each instance. When creating an instance we must specify the
427test method it is to run. We do this by passing the method name in the
428constructor::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000429
Ezio Melotti68beef62010-02-28 03:11:07 +0000430 defaultSizeTestCase = WidgetTestCase('test_default_size')
431 resizeTestCase = WidgetTestCase('test_resize')
Georg Brandl8ec7f652007-08-15 14:28:01 +0000432
433Test case instances are grouped together according to the features they test.
434:mod:`unittest` provides a mechanism for this: the :dfn:`test suite`,
435represented by :mod:`unittest`'s :class:`TestSuite` class::
436
437 widgetTestSuite = unittest.TestSuite()
Ezio Melotti68beef62010-02-28 03:11:07 +0000438 widgetTestSuite.addTest(WidgetTestCase('test_default_size'))
439 widgetTestSuite.addTest(WidgetTestCase('test_resize'))
Georg Brandl8ec7f652007-08-15 14:28:01 +0000440
441For the ease of running tests, as we will see later, it is a good idea to
442provide in each test module a callable object that returns a pre-built test
443suite::
444
445 def suite():
446 suite = unittest.TestSuite()
Ezio Melotti68beef62010-02-28 03:11:07 +0000447 suite.addTest(WidgetTestCase('test_default_size'))
448 suite.addTest(WidgetTestCase('test_resize'))
Georg Brandl8ec7f652007-08-15 14:28:01 +0000449 return suite
450
451or even::
452
453 def suite():
Ezio Melotti68beef62010-02-28 03:11:07 +0000454 tests = ['test_default_size', 'test_resize']
Georg Brandl8ec7f652007-08-15 14:28:01 +0000455
456 return unittest.TestSuite(map(WidgetTestCase, tests))
457
458Since it is a common pattern to create a :class:`TestCase` subclass with many
459similarly named test functions, :mod:`unittest` provides a :class:`TestLoader`
460class that can be used to automate the process of creating a test suite and
461populating it with individual tests. For example, ::
462
463 suite = unittest.TestLoader().loadTestsFromTestCase(WidgetTestCase)
464
Ezio Melotti68beef62010-02-28 03:11:07 +0000465will create a test suite that will run ``WidgetTestCase.test_default_size()`` and
466``WidgetTestCase.test_resize``. :class:`TestLoader` uses the ``'test'`` method
Georg Brandl8ec7f652007-08-15 14:28:01 +0000467name prefix to identify test methods automatically.
468
469Note that the order in which the various test cases will be run is determined by
470sorting the test function names with the built-in :func:`cmp` function.
471
472Often it is desirable to group suites of test cases together, so as to run tests
473for the whole system at once. This is easy, since :class:`TestSuite` instances
474can be added to a :class:`TestSuite` just as :class:`TestCase` instances can be
475added to a :class:`TestSuite`::
476
477 suite1 = module1.TheTestSuite()
478 suite2 = module2.TheTestSuite()
479 alltests = unittest.TestSuite([suite1, suite2])
480
481You can place the definitions of test cases and test suites in the same modules
482as the code they are to test (such as :file:`widget.py`), but there are several
483advantages to placing the test code in a separate module, such as
484:file:`test_widget.py`:
485
486* The test module can be run standalone from the command line.
487
488* The test code can more easily be separated from shipped code.
489
490* There is less temptation to change test code to fit the code it tests without
491 a good reason.
492
493* Test code should be modified much less frequently than the code it tests.
494
495* Tested code can be refactored more easily.
496
497* Tests for modules written in C must be in separate modules anyway, so why not
498 be consistent?
499
500* If the testing strategy changes, there is no need to change the source code.
501
502
503.. _legacy-unit-tests:
504
505Re-using old test code
506----------------------
507
508Some users will find that they have existing test code that they would like to
509run from :mod:`unittest`, without converting every old test function to a
510:class:`TestCase` subclass.
511
512For this reason, :mod:`unittest` provides a :class:`FunctionTestCase` class.
513This subclass of :class:`TestCase` can be used to wrap an existing test
514function. Set-up and tear-down functions can also be provided.
515
516Given the following test function::
517
518 def testSomething():
519 something = makeSomething()
520 assert something.name is not None
521 # ...
522
523one can create an equivalent test case instance as follows::
524
525 testcase = unittest.FunctionTestCase(testSomething)
526
527If there are additional set-up and tear-down methods that should be called as
528part of the test case's operation, they can also be provided like so::
529
530 testcase = unittest.FunctionTestCase(testSomething,
531 setUp=makeSomethingDB,
532 tearDown=deleteSomethingDB)
533
534To make migrating existing test suites easier, :mod:`unittest` supports tests
535raising :exc:`AssertionError` to indicate test failure. However, it is
536recommended that you use the explicit :meth:`TestCase.fail\*` and
537:meth:`TestCase.assert\*` methods instead, as future versions of :mod:`unittest`
538may treat :exc:`AssertionError` differently.
539
540.. note::
541
Georg Brandl2fcd1732009-05-30 10:45:40 +0000542 Even though :class:`FunctionTestCase` can be used to quickly convert an
543 existing test base over to a :mod:`unittest`\ -based system, this approach is
544 not recommended. Taking the time to set up proper :class:`TestCase`
545 subclasses will make future test refactorings infinitely easier.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000546
Benjamin Peterson99721e02009-03-23 23:10:14 +0000547In some cases, the existing tests may have been written using the :mod:`doctest`
548module. If so, :mod:`doctest` provides a :class:`DocTestSuite` class that can
549automatically build :class:`unittest.TestSuite` instances from the existing
550:mod:`doctest`\ -based tests.
551
Georg Brandl8ec7f652007-08-15 14:28:01 +0000552
Benjamin Peterson692428e2009-03-23 21:50:21 +0000553.. _unittest-skipping:
554
555Skipping tests and expected failures
556------------------------------------
557
Michael Foordfb0844b2010-02-05 21:45:12 +0000558.. versionadded:: 2.7
559
Benjamin Peterson692428e2009-03-23 21:50:21 +0000560Unittest supports skipping individual test methods and even whole classes of
561tests. In addition, it supports marking a test as a "expected failure," a test
562that is broken and will fail, but shouldn't be counted as a failure on a
563:class:`TestResult`.
564
565Skipping a test is simply a matter of using the :func:`skip` :term:`decorator`
566or one of its conditional variants.
567
568Basic skipping looks like this: ::
569
570 class MyTestCase(unittest.TestCase):
571
572 @unittest.skip("demonstrating skipping")
573 def test_nothing(self):
574 self.fail("shouldn't happen")
575
Georg Brandl2fcd1732009-05-30 10:45:40 +0000576 @unittest.skipIf(mylib.__version__ < (1, 3),
577 "not supported in this library version")
Benjamin Petersonbe76d4c2009-03-29 03:16:57 +0000578 def test_format(self):
Benjamin Peterson097aafd2009-03-29 03:39:58 +0000579 # Tests that work for only a certain version of the library.
Benjamin Petersonbe76d4c2009-03-29 03:16:57 +0000580 pass
581
582 @unittest.skipUnless(sys.platform.startswith("win"), "requires Windows")
583 def test_windows_support(self):
584 # windows specific testing code
585 pass
586
Benjamin Peterson692428e2009-03-23 21:50:21 +0000587This is the output of running the example above in verbose mode: ::
588
Benjamin Peterson097aafd2009-03-29 03:39:58 +0000589 test_format (__main__.MyTestCase) ... skipped 'not supported in this library version'
Benjamin Peterson692428e2009-03-23 21:50:21 +0000590 test_nothing (__main__.MyTestCase) ... skipped 'demonstrating skipping'
Benjamin Petersonbe76d4c2009-03-29 03:16:57 +0000591 test_windows_support (__main__.MyTestCase) ... skipped 'requires Windows'
Benjamin Peterson692428e2009-03-23 21:50:21 +0000592
593 ----------------------------------------------------------------------
Benjamin Petersonbe76d4c2009-03-29 03:16:57 +0000594 Ran 3 tests in 0.005s
595
596 OK (skipped=3)
Benjamin Peterson692428e2009-03-23 21:50:21 +0000597
598Classes can be skipped just like methods: ::
599
600 @skip("showing class skipping")
601 class MySkippedTestCase(unittest.TestCase):
602 def test_not_run(self):
603 pass
604
Benjamin Peterson31b78062009-03-23 23:13:36 +0000605:meth:`TestCase.setUp` can also skip the test. This is useful when a resource
606that needs to be set up is not available.
607
Benjamin Peterson692428e2009-03-23 21:50:21 +0000608Expected failures use the :func:`expectedFailure` decorator. ::
609
610 class ExpectedFailureTestCase(unittest.TestCase):
611 @unittest.expectedFailure
612 def test_fail(self):
613 self.assertEqual(1, 0, "broken")
614
615It's easy to roll your own skipping decorators by making a decorator that calls
616:func:`skip` on the test when it wants it to be skipped. This decorator skips
617the test unless the passed object has a certain attribute: ::
618
619 def skipUnlessHasattr(obj, attr):
620 if hasattr(obj, attr):
621 return lambda func: func
622 return unittest.skip("{0!r} doesn't have {1!r}".format(obj, attr))
623
624The following decorators implement test skipping and expected failures:
625
626.. function:: skip(reason)
627
628 Unconditionally skip the decorated test. *reason* should describe why the
629 test is being skipped.
630
631.. function:: skipIf(condition, reason)
632
633 Skip the decorated test if *condition* is true.
634
635.. function:: skipUnless(condition, reason)
636
637 Skip the decoratored test unless *condition* is true.
638
639.. function:: expectedFailure
640
641 Mark the test as an expected failure. If the test fails when run, the test
642 is not counted as a failure.
643
Michael Foord09e29802010-04-04 22:41:54 +0000644Skipped tests will not have :meth:`setUp` or :meth:`tearDown` run around them.
645Skipped classes will not have :meth:`setUpClass` or :meth:`tearDownClass` run.
Michael Foordba097ec2010-04-03 17:03:11 +0000646
Benjamin Peterson692428e2009-03-23 21:50:21 +0000647
Georg Brandl8ec7f652007-08-15 14:28:01 +0000648.. _unittest-contents:
649
650Classes and functions
651---------------------
652
Benjamin Peterson99721e02009-03-23 23:10:14 +0000653This section describes in depth the API of :mod:`unittest`.
654
655
656.. _testcase-objects:
657
658Test cases
659~~~~~~~~~~
Georg Brandl8ec7f652007-08-15 14:28:01 +0000660
661.. class:: TestCase([methodName])
662
663 Instances of the :class:`TestCase` class represent the smallest testable units
664 in the :mod:`unittest` universe. This class is intended to be used as a base
665 class, with specific tests being implemented by concrete subclasses. This class
666 implements the interface needed by the test runner to allow it to drive the
667 test, and methods that the test code can use to check for and report various
668 kinds of failure.
669
670 Each instance of :class:`TestCase` will run a single test method: the method
671 named *methodName*. If you remember, we had an earlier example that went
672 something like this::
673
674 def suite():
675 suite = unittest.TestSuite()
Ezio Melotti68beef62010-02-28 03:11:07 +0000676 suite.addTest(WidgetTestCase('test_default_size'))
677 suite.addTest(WidgetTestCase('test_resize'))
Georg Brandl8ec7f652007-08-15 14:28:01 +0000678 return suite
679
680 Here, we create two instances of :class:`WidgetTestCase`, each of which runs a
681 single test.
682
Benjamin Peterson99721e02009-03-23 23:10:14 +0000683 *methodName* defaults to :meth:`runTest`.
684
685 :class:`TestCase` instances provide three groups of methods: one group used
686 to run the test, another used by the test implementation to check conditions
687 and report failures, and some inquiry methods allowing information about the
688 test itself to be gathered.
689
690 Methods in the first group (running the test) are:
691
692
693 .. method:: setUp()
694
695 Method called to prepare the test fixture. This is called immediately
696 before calling the test method; any exception raised by this method will
697 be considered an error rather than a test failure. The default
698 implementation does nothing.
699
700
701 .. method:: tearDown()
702
703 Method called immediately after the test method has been called and the
704 result recorded. This is called even if the test method raised an
705 exception, so the implementation in subclasses may need to be particularly
706 careful about checking internal state. Any exception raised by this
707 method will be considered an error rather than a test failure. This
708 method will only be called if the :meth:`setUp` succeeds, regardless of
709 the outcome of the test method. The default implementation does nothing.
710
711
Michael Foordba097ec2010-04-03 17:03:11 +0000712 .. method:: setUpClass()
713
714 A class method called before tests in an individual class run.
715 ``setUpClass`` is called with the class as the only argument
Michael Foord09e29802010-04-04 22:41:54 +0000716 and must be decorated as a :func:`classmethod`::
Michael Foordba097ec2010-04-03 17:03:11 +0000717
718 @classmethod
719 def setUpClass(cls):
720 ...
721
722 See `Class and Module Fixtures`_ for more details.
723
724 .. versionadded:: 2.7
725
726
727 .. method:: tearDownClass()
728
729 A class method called after tests in an individual class have run.
730 ``tearDownClass`` is called with the class as the only argument
731 and must be decorated as a :meth:`classmethod`::
732
733 @classmethod
734 def tearDownClass(cls):
735 ...
736
737 See `Class and Module Fixtures`_ for more details.
738
739 .. versionadded:: 2.7
740
741
Benjamin Peterson99721e02009-03-23 23:10:14 +0000742 .. method:: run([result])
743
744 Run the test, collecting the result into the test result object passed as
745 *result*. If *result* is omitted or :const:`None`, a temporary result
Ezio Melottic2f5a592009-06-30 22:51:06 +0000746 object is created (by calling the :meth:`defaultTestResult` method) and
747 used. The result object is not returned to :meth:`run`'s caller.
Benjamin Peterson99721e02009-03-23 23:10:14 +0000748
749 The same effect may be had by simply calling the :class:`TestCase`
750 instance.
751
752
Benjamin Peterson47d97382009-03-26 20:05:50 +0000753 .. method:: skipTest(reason)
Benjamin Peterson99721e02009-03-23 23:10:14 +0000754
Benjamin Peterson31b78062009-03-23 23:13:36 +0000755 Calling this during the a test method or :meth:`setUp` skips the current
756 test. See :ref:`unittest-skipping` for more information.
Benjamin Peterson99721e02009-03-23 23:10:14 +0000757
Georg Brandl90aae552010-04-10 11:15:24 +0000758 .. versionadded:: 2.7
759
Benjamin Peterson99721e02009-03-23 23:10:14 +0000760
761 .. method:: debug()
762
763 Run the test without collecting the result. This allows exceptions raised
764 by the test to be propagated to the caller, and can be used to support
765 running tests under a debugger.
766
767 The test code can use any of the following methods to check for and report
768 failures.
769
770
Gregory P. Smith28399852009-03-31 16:54:10 +0000771 .. method:: assertTrue(expr[, msg])
772 assert_(expr[, msg])
Benjamin Peterson99721e02009-03-23 23:10:14 +0000773 failUnless(expr[, msg])
Benjamin Peterson99721e02009-03-23 23:10:14 +0000774
Georg Brandl64034bb2009-04-25 14:51:31 +0000775 Signal a test failure if *expr* is false; the explanation for the failure
Benjamin Peterson99721e02009-03-23 23:10:14 +0000776 will be *msg* if given, otherwise it will be :const:`None`.
777
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000778 .. deprecated:: 2.7
Georg Brandl1c7c7302010-02-06 10:08:21 +0000779 :meth:`failUnless`; use one of the ``assert`` variants.
Michael Foorddb43b5a2010-02-10 14:25:12 +0000780 :meth:`assert_`; use :meth:`assertTrue`.
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000781
Benjamin Peterson99721e02009-03-23 23:10:14 +0000782
783 .. method:: assertEqual(first, second[, msg])
784 failUnlessEqual(first, second[, msg])
785
786 Test that *first* and *second* are equal. If the values do not compare
787 equal, the test will fail with the explanation given by *msg*, or
Gregory P. Smith28399852009-03-31 16:54:10 +0000788 :const:`None`. Note that using :meth:`assertEqual` improves upon
789 doing the comparison as the first parameter to :meth:`assertTrue`: the
790 default value for *msg* include representations of both *first* and
791 *second*.
792
793 In addition, if *first* and *second* are the exact same type and one of
Michael Foordfe6349c2010-02-08 22:41:16 +0000794 list, tuple, dict, set, frozenset or unicode or any type that a subclass
Michael Foord7b5aa462010-02-08 23:15:22 +0000795 registers with :meth:`addTypeEqualityFunc` the type specific equality
796 function will be called in order to generate a more useful default error
797 message.
Gregory P. Smith28399852009-03-31 16:54:10 +0000798
799 .. versionchanged:: 2.7
800 Added the automatic calling of type specific equality function.
Benjamin Peterson99721e02009-03-23 23:10:14 +0000801
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000802 .. deprecated:: 2.7
Georg Brandl1c7c7302010-02-06 10:08:21 +0000803 :meth:`failUnlessEqual`; use :meth:`assertEqual`.
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000804
Benjamin Peterson99721e02009-03-23 23:10:14 +0000805
806 .. method:: assertNotEqual(first, second[, msg])
807 failIfEqual(first, second[, msg])
808
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
Gregory P. Smith28399852009-03-31 16:54:10 +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 Peterson99721e02009-03-23 23:10:14 +0000813 default value for *msg* can be computed to include representations of both
814 *first* and *second*.
815
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000816 .. deprecated:: 2.7
Georg Brandl1c7c7302010-02-06 10:08:21 +0000817 :meth:`failIfEqual`; use :meth:`assertNotEqual`.
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000818
Benjamin Peterson99721e02009-03-23 23:10:14 +0000819
Michael Foordba097ec2010-04-03 17:03:11 +0000820 .. method:: assertAlmostEqual(first, second[, places[, msg[, delta]]])
Michael Foordefc2f492010-04-08 04:33:20 +0000821 failUnlessAlmostEqual(first, second[, places[, msg[, delta]]])
Benjamin Peterson99721e02009-03-23 23:10:14 +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
Andrew M. Kuchlingfb759a22010-04-29 01:44:30 +0000832 If *delta* is supplied instead of *places* then the difference
Michael Foordba097ec2010-04-03 17:03:11 +0000833 between *first* and *second* must be less than *delta*.
834
835 Supplying both *delta* and *places* raises a ``TypeError``.
836
Michael Foordc3f79372009-09-13 16:40:02 +0000837 .. versionchanged:: 2.7
838 Objects that compare equal are automatically almost equal.
Michael Foordba097ec2010-04-03 17:03:11 +0000839 Added the ``delta`` keyword argument.
Michael Foordc3f79372009-09-13 16:40:02 +0000840
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000841 .. deprecated:: 2.7
Georg Brandl1c7c7302010-02-06 10:08:21 +0000842 :meth:`failUnlessAlmostEqual`; use :meth:`assertAlmostEqual`.
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000843
Benjamin Peterson99721e02009-03-23 23:10:14 +0000844
Michael Foordba097ec2010-04-03 17:03:11 +0000845 .. method:: assertNotAlmostEqual(first, second[, places[, msg[, delta]]])
Michael Foordefc2f492010-04-08 04:33:20 +0000846 failIfAlmostEqual(first, second[, places[, msg[, delta]]])
Benjamin Peterson99721e02009-03-23 23:10:14 +0000847
848 Test that *first* and *second* are not approximately equal by computing
849 the difference, rounding to the given number of decimal *places* (default
850 7), and comparing to zero.
851
852 Note that comparing a given number of decimal places is not the same as
853 comparing a given number of significant digits. If the values do not
854 compare equal, the test will fail with the explanation given by *msg*, or
855 :const:`None`.
856
Andrew M. Kuchlingfb759a22010-04-29 01:44:30 +0000857 If *delta* is supplied instead of *places* then the difference
Michael Foordba097ec2010-04-03 17:03:11 +0000858 between *first* and *second* must be more than *delta*.
859
860 Supplying both *delta* and *places* raises a ``TypeError``.
861
Michael Foordc3f79372009-09-13 16:40:02 +0000862 .. versionchanged:: 2.7
863 Objects that compare equal automatically fail.
Michael Foordba097ec2010-04-03 17:03:11 +0000864 Added the ``delta`` keyword argument.
Michael Foordc3f79372009-09-13 16:40:02 +0000865
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000866 .. deprecated:: 2.7
Georg Brandl1c7c7302010-02-06 10:08:21 +0000867 :meth:`failIfAlmostEqual`; use :meth:`assertNotAlmostEqual`.
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000868
Benjamin Peterson99721e02009-03-23 23:10:14 +0000869
Gregory P. Smith28399852009-03-31 16:54:10 +0000870 .. method:: assertGreater(first, second, msg=None)
871 assertGreaterEqual(first, second, msg=None)
872 assertLess(first, second, msg=None)
873 assertLessEqual(first, second, msg=None)
874
875 Test that *first* is respectively >, >=, < or <= than *second* depending
Andrew M. Kuchling59631852009-04-09 11:23:36 +0000876 on the method name. If not, the test will fail with an explanation
Gregory P. Smith28399852009-03-31 16:54:10 +0000877 or with the explanation given by *msg*::
878
879 >>> self.assertGreaterEqual(3, 4)
880 AssertionError: "3" unexpectedly not greater than or equal to "4"
881
882 .. versionadded:: 2.7
883
884
885 .. method:: assertMultiLineEqual(self, first, second, msg=None)
886
887 Test that the multiline string *first* is equal to the string *second*.
888 When not equal a diff of the two strings highlighting the differences
Michael Foordfe6349c2010-02-08 22:41:16 +0000889 will be included in the error message. This method is used by default
890 when comparing Unicode strings with :meth:`assertEqual`.
Gregory P. Smith28399852009-03-31 16:54:10 +0000891
Michael Foord98e7b762010-03-20 03:00:34 +0000892 If specified, *msg* will be used as the error message on failure.
Gregory P. Smith28399852009-03-31 16:54:10 +0000893
894 .. versionadded:: 2.7
895
896
Ezio Melotti5afe42b2010-01-16 19:36:42 +0000897 .. method:: assertRegexpMatches(text, regexp, msg=None)
Gregory P. Smith28399852009-03-31 16:54:10 +0000898
899 Verifies that a *regexp* search matches *text*. Fails with an error
900 message including the pattern and the *text*. *regexp* may be
901 a regular expression object or a string containing a regular expression
902 suitable for use by :func:`re.search`.
903
904 .. versionadded:: 2.7
905
906
Michael Foordba097ec2010-04-03 17:03:11 +0000907 .. method:: assertNotRegexpMatches(text, regexp, msg=None)
908
909 Verifies that a *regexp* search does not match *text*. Fails with an error
Michael Foord959c16d2010-05-08 16:40:52 +0000910 message including the pattern and the part of *text* that matches. *regexp*
911 may be a regular expression object or a string containing a regular
912 expression suitable for use by :func:`re.search`.
Michael Foordba097ec2010-04-03 17:03:11 +0000913
914 .. versionadded:: 2.7
915
916
Gregory P. Smith28399852009-03-31 16:54:10 +0000917 .. method:: assertIn(first, second, msg=None)
918 assertNotIn(first, second, msg=None)
919
Andrew M. Kuchling59631852009-04-09 11:23:36 +0000920 Tests that *first* is or is not in *second* with an explanatory error
Gregory P. Smith28399852009-03-31 16:54:10 +0000921 message as appropriate.
922
Michael Foord98e7b762010-03-20 03:00:34 +0000923 If specified, *msg* will be used as the error message on failure.
Gregory P. Smith28399852009-03-31 16:54:10 +0000924
925 .. versionadded:: 2.7
926
927
Michael Foord98e7b762010-03-20 03:00:34 +0000928 .. method:: assertItemsEqual(actual, expected, msg=None)
Gregory P. Smith28399852009-03-31 16:54:10 +0000929
Michael Foorde70c72c2010-01-31 19:59:26 +0000930 Test that sequence *expected* contains the same elements as *actual*,
Michael Foord98e7b762010-03-20 03:00:34 +0000931 regardless of their order. When they don't, an error message listing the
932 differences between the sequences will be generated.
Gregory P. Smith28399852009-03-31 16:54:10 +0000933
Michael Foord98e7b762010-03-20 03:00:34 +0000934 Duplicate elements are *not* ignored when comparing *actual* and
935 *expected*. It verifies if each element has the same count in both
936 sequences. It is the equivalent of ``assertEqual(sorted(expected),
937 sorted(actual))`` but it works with sequences of unhashable objects as
938 well.
Michael Foord1c430012010-02-05 20:52:14 +0000939
Michael Foord98e7b762010-03-20 03:00:34 +0000940 If specified, *msg* will be used as the error message on failure.
Gregory P. Smith28399852009-03-31 16:54:10 +0000941
942 .. versionadded:: 2.7
943
944
945 .. method:: assertSetEqual(set1, set2, msg=None)
946
947 Tests that two sets are equal. If not, an error message is constructed
Michael Foordfe6349c2010-02-08 22:41:16 +0000948 that lists the differences between the sets. This method is used by
949 default when comparing sets or frozensets with :meth:`assertEqual`.
Gregory P. Smith28399852009-03-31 16:54:10 +0000950
951 Fails if either of *set1* or *set2* does not have a :meth:`set.difference`
952 method.
953
Michael Foord98e7b762010-03-20 03:00:34 +0000954 If specified, *msg* will be used as the error message on failure.
Gregory P. Smith28399852009-03-31 16:54:10 +0000955
956 .. versionadded:: 2.7
957
958
959 .. method:: assertDictEqual(expected, actual, msg=None)
960
961 Test that two dictionaries are equal. If not, an error message is
Michael Foordfe6349c2010-02-08 22:41:16 +0000962 constructed that shows the differences in the dictionaries. This
963 method will be used by default to compare dictionaries in
964 calls to :meth:`assertEqual`.
Gregory P. Smith28399852009-03-31 16:54:10 +0000965
Michael Foord98e7b762010-03-20 03:00:34 +0000966 If specified, *msg* will be used as the error message on failure.
Gregory P. Smith28399852009-03-31 16:54:10 +0000967
968 .. versionadded:: 2.7
969
970
971 .. method:: assertDictContainsSubset(expected, actual, msg=None)
972
Andrew M. Kuchling59631852009-04-09 11:23:36 +0000973 Tests whether the key/value pairs in dictionary *actual* are a
Gregory P. Smith28399852009-03-31 16:54:10 +0000974 superset of those in *expected*. If not, an error message listing
975 the missing keys and mismatched values is generated.
976
Michael Foord98e7b762010-03-20 03:00:34 +0000977 If specified, *msg* will be used as the error message on failure.
Gregory P. Smith28399852009-03-31 16:54:10 +0000978
979 .. versionadded:: 2.7
980
981
982 .. method:: assertListEqual(list1, list2, msg=None)
983 assertTupleEqual(tuple1, tuple2, msg=None)
984
985 Tests that two lists or tuples are equal. If not an error message is
986 constructed that shows only the differences between the two. An error
987 is also raised if either of the parameters are of the wrong type.
Michael Foordfe6349c2010-02-08 22:41:16 +0000988 These methods are used by default when comparing lists or tuples with
989 :meth:`assertEqual`.
Gregory P. Smith28399852009-03-31 16:54:10 +0000990
Michael Foord98e7b762010-03-20 03:00:34 +0000991 If specified, *msg* will be used as the error message on failure.
Gregory P. Smith28399852009-03-31 16:54:10 +0000992
993 .. versionadded:: 2.7
994
995
996 .. method:: assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)
997
998 Tests that two sequences are equal. If a *seq_type* is supplied, both
999 *seq1* and *seq2* must be instances of *seq_type* or a failure will
1000 be raised. If the sequences are different an error message is
1001 constructed that shows the difference between the two.
1002
Michael Foord98e7b762010-03-20 03:00:34 +00001003 If specified, *msg* will be used as the error message on failure.
Gregory P. Smith28399852009-03-31 16:54:10 +00001004
1005 This method is used to implement :meth:`assertListEqual` and
1006 :meth:`assertTupleEqual`.
1007
1008 .. versionadded:: 2.7
1009
1010
Benjamin Peterson99721e02009-03-23 23:10:14 +00001011 .. method:: assertRaises(exception[, callable, ...])
1012 failUnlessRaises(exception[, callable, ...])
1013
1014 Test that an exception is raised when *callable* is called with any
1015 positional or keyword arguments that are also passed to
1016 :meth:`assertRaises`. The test passes if *exception* is raised, is an
1017 error if another exception is raised, or fails if no exception is raised.
1018 To catch any of a group of exceptions, a tuple containing the exception
1019 classes may be passed as *exception*.
1020
Benjamin Peterson7233acc2009-03-29 03:31:40 +00001021 If *callable* is omitted or None, returns a context manager so that the
1022 code under test can be written inline rather than as a function::
1023
Michael Foord1f3fa8a2010-02-05 21:07:38 +00001024 with self.assertRaises(SomeException):
Benjamin Peterson7233acc2009-03-29 03:31:40 +00001025 do_something()
1026
Kristján Valur Jónssone2a77982009-08-27 22:20:21 +00001027 The context manager will store the caught exception object in its
Georg Brandldc3694b2010-02-07 17:02:22 +00001028 :attr:`exception` attribute. This can be useful if the intention
Michael Foord1f3fa8a2010-02-05 21:07:38 +00001029 is to perform additional checks on the exception raised::
1030
1031 with self.assertRaises(SomeException) as cm:
1032 do_something()
1033
Georg Brandldc3694b2010-02-07 17:02:22 +00001034 the_exception = cm.exception
Michael Foordba7732e2010-02-05 23:28:12 +00001035 self.assertEqual(the_exception.error_code, 3)
Kristján Valur Jónssone2a77982009-08-27 22:20:21 +00001036
Benjamin Peterson99721e02009-03-23 23:10:14 +00001037 .. versionchanged:: 2.7
Benjamin Peterson7233acc2009-03-29 03:31:40 +00001038 Added the ability to use :meth:`assertRaises` as a context manager.
Benjamin Peterson99721e02009-03-23 23:10:14 +00001039
Gregory P. Smith65ff0052009-03-31 19:59:14 +00001040 .. deprecated:: 2.7
Georg Brandl1c7c7302010-02-06 10:08:21 +00001041 :meth:`failUnlessRaises`; use :meth:`assertRaises`.
Gregory P. Smith65ff0052009-03-31 19:59:14 +00001042
Benjamin Peterson99721e02009-03-23 23:10:14 +00001043
Gregory P. Smith28399852009-03-31 16:54:10 +00001044 .. method:: assertRaisesRegexp(exception, regexp[, callable, ...])
Benjamin Peterson99721e02009-03-23 23:10:14 +00001045
Gregory P. Smith28399852009-03-31 16:54:10 +00001046 Like :meth:`assertRaises` but also tests that *regexp* matches
1047 on the string representation of the raised exception. *regexp* may be
1048 a regular expression object or a string containing a regular expression
1049 suitable for use by :func:`re.search`. Examples::
1050
1051 self.assertRaisesRegexp(ValueError, 'invalid literal for.*XYZ$',
1052 int, 'XYZ')
1053
1054 or::
1055
1056 with self.assertRaisesRegexp(ValueError, 'literal'):
1057 int('XYZ')
1058
1059 .. versionadded:: 2.7
1060
1061
1062 .. method:: assertIsNone(expr[, msg])
1063
1064 This signals a test failure if *expr* is not None.
1065
1066 .. versionadded:: 2.7
1067
1068
1069 .. method:: assertIsNotNone(expr[, msg])
1070
1071 The inverse of the :meth:`assertIsNone` method.
1072 This signals a test failure if *expr* is None.
1073
1074 .. versionadded:: 2.7
1075
1076
Michael Foordf2dfef12009-04-05 19:19:28 +00001077 .. method:: assertIs(expr1, expr2[, msg])
1078
1079 This signals a test failure if *expr1* and *expr2* don't evaluate to the same
1080 object.
1081
1082 .. versionadded:: 2.7
1083
1084
1085 .. method:: assertIsNot(expr1, expr2[, msg])
1086
1087 The inverse of the :meth:`assertIs` method.
1088 This signals a test failure if *expr1* and *expr2* evaluate to the same
1089 object.
1090
1091 .. versionadded:: 2.7
1092
1093
Georg Brandlf895cf52009-10-01 20:59:31 +00001094 .. method:: assertIsInstance(obj, cls[, msg])
1095
1096 This signals a test failure if *obj* is not an instance of *cls* (which
1097 can be a class or a tuple of classes, as supported by :func:`isinstance`).
1098
1099 .. versionadded:: 2.7
1100
1101
1102 .. method:: assertNotIsInstance(obj, cls[, msg])
1103
1104 The inverse of the :meth:`assertIsInstance` method. This signals a test
1105 failure if *obj* is an instance of *cls*.
1106
1107 .. versionadded:: 2.7
1108
1109
Gregory P. Smith28399852009-03-31 16:54:10 +00001110 .. method:: assertFalse(expr[, msg])
1111 failIf(expr[, msg])
1112
1113 The inverse of the :meth:`assertTrue` method is the :meth:`assertFalse` method.
Benjamin Peterson99721e02009-03-23 23:10:14 +00001114 This signals a test failure if *expr* is true, with *msg* or :const:`None`
1115 for the error message.
1116
Gregory P. Smith65ff0052009-03-31 19:59:14 +00001117 .. deprecated:: 2.7
Georg Brandl1c7c7302010-02-06 10:08:21 +00001118 :meth:`failIf`; use :meth:`assertFalse`.
Gregory P. Smith65ff0052009-03-31 19:59:14 +00001119
Benjamin Peterson99721e02009-03-23 23:10:14 +00001120
1121 .. method:: fail([msg])
1122
1123 Signals a test failure unconditionally, with *msg* or :const:`None` for
1124 the error message.
1125
1126
1127 .. attribute:: failureException
1128
1129 This class attribute gives the exception raised by the test method. If a
1130 test framework needs to use a specialized exception, possibly to carry
1131 additional information, it must subclass this exception in order to "play
1132 fair" with the framework. The initial value of this attribute is
1133 :exc:`AssertionError`.
1134
Michael Foord345b2fe2009-04-02 03:20:38 +00001135
1136 .. attribute:: longMessage
1137
1138 If set to True then any explicit failure message you pass in to the
1139 assert methods will be appended to the end of the normal failure message.
1140 The normal messages contain useful information about the objects involved,
1141 for example the message from assertEqual shows you the repr of the two
1142 unequal objects. Setting this attribute to True allows you to have a
1143 custom error message in addition to the normal one.
1144
1145 This attribute defaults to False, meaning that a custom message passed
1146 to an assert method will silence the normal message.
1147
1148 The class setting can be overridden in individual tests by assigning an
1149 instance attribute to True or False before calling the assert methods.
1150
1151 .. versionadded:: 2.7
1152
1153
Benjamin Peterson99721e02009-03-23 23:10:14 +00001154 Testing frameworks can use the following methods to collect information on
1155 the test:
1156
1157
1158 .. method:: countTestCases()
1159
1160 Return the number of tests represented by this test object. For
1161 :class:`TestCase` instances, this will always be ``1``.
1162
1163
1164 .. method:: defaultTestResult()
1165
1166 Return an instance of the test result class that should be used for this
1167 test case class (if no other result instance is provided to the
1168 :meth:`run` method).
1169
1170 For :class:`TestCase` instances, this will always be an instance of
1171 :class:`TestResult`; subclasses of :class:`TestCase` should override this
1172 as necessary.
1173
1174
1175 .. method:: id()
1176
1177 Return a string identifying the specific test case. This is usually the
1178 full name of the test method, including the module and class name.
1179
1180
1181 .. method:: shortDescription()
1182
Gregory P. Smith28399852009-03-31 16:54:10 +00001183 Returns a description of the test, or :const:`None` if no description
1184 has been provided. The default implementation of this method
1185 returns the first line of the test method's docstring, if available,
Michael Foorddb43b5a2010-02-10 14:25:12 +00001186 or :const:`None`.
Gregory P. Smith28399852009-03-31 16:54:10 +00001187
1188
1189 .. method:: addTypeEqualityFunc(typeobj, function)
1190
1191 Registers a type specific :meth:`assertEqual` equality checking
1192 function to be called by :meth:`assertEqual` when both objects it has
1193 been asked to compare are exactly *typeobj* (not subclasses).
1194 *function* must take two positional arguments and a third msg=None
1195 keyword argument just as :meth:`assertEqual` does. It must raise
Andrew M. Kuchling59631852009-04-09 11:23:36 +00001196 ``self.failureException`` when inequality between the first two
Gregory P. Smith28399852009-03-31 16:54:10 +00001197 parameters is detected.
1198
1199 One good use of custom equality checking functions for a type
Andrew M. Kuchling59631852009-04-09 11:23:36 +00001200 is to raise ``self.failureException`` with an error message useful
1201 for debugging the problem by explaining the inequalities in detail.
Gregory P. Smith28399852009-03-31 16:54:10 +00001202
1203 .. versionadded:: 2.7
Georg Brandl8ec7f652007-08-15 14:28:01 +00001204
1205
Michael Foorde2fb98f2009-05-02 20:15:05 +00001206 .. method:: addCleanup(function[, *args[, **kwargs]])
1207
1208 Add a function to be called after :meth:`tearDown` to cleanup resources
1209 used during the test. Functions will be called in reverse order to the
1210 order they are added (LIFO). They are called with any arguments and
1211 keyword arguments passed into :meth:`addCleanup` when they are
1212 added.
1213
1214 If :meth:`setUp` fails, meaning that :meth:`tearDown` is not called,
1215 then any cleanup functions added will still be called.
1216
1217 .. versionadded:: 2.7
1218
1219
1220 .. method:: doCleanups()
1221
Barry Warsawfa900d42010-04-12 14:40:49 +00001222 This method is called unconditionally after :meth:`tearDown`, or
Michael Foorde2fb98f2009-05-02 20:15:05 +00001223 after :meth:`setUp` if :meth:`setUp` raises an exception.
1224
1225 It is responsible for calling all the cleanup functions added by
1226 :meth:`addCleanup`. If you need cleanup functions to be called
1227 *prior* to :meth:`tearDown` then you can call :meth:`doCleanups`
1228 yourself.
1229
1230 :meth:`doCleanups` pops methods off the stack of cleanup
1231 functions one at a time, so it can be called at any time.
1232
1233 .. versionadded:: 2.7
1234
1235
Georg Brandl8ec7f652007-08-15 14:28:01 +00001236.. class:: FunctionTestCase(testFunc[, setUp[, tearDown[, description]]])
1237
1238 This class implements the portion of the :class:`TestCase` interface which
Georg Brandl2fcd1732009-05-30 10:45:40 +00001239 allows the test runner to drive the test, but does not provide the methods
1240 which test code can use to check and report errors. This is used to create
1241 test cases using legacy test code, allowing it to be integrated into a
1242 :mod:`unittest`-based test framework.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001243
1244
Benjamin Peterson99721e02009-03-23 23:10:14 +00001245.. _testsuite-objects:
1246
1247Grouping tests
1248~~~~~~~~~~~~~~
1249
Georg Brandl8ec7f652007-08-15 14:28:01 +00001250.. class:: TestSuite([tests])
1251
1252 This class represents an aggregation of individual tests cases and test suites.
1253 The class presents the interface needed by the test runner to allow it to be run
1254 as any other test case. Running a :class:`TestSuite` instance is the same as
1255 iterating over the suite, running each test individually.
1256
1257 If *tests* is given, it must be an iterable of individual test cases or other
1258 test suites that will be used to build the suite initially. Additional methods
1259 are provided to add test cases and suites to the collection later on.
1260
Benjamin Peterson176a56c2009-05-25 00:48:58 +00001261 :class:`TestSuite` objects behave much like :class:`TestCase` objects, except
1262 they do not actually implement a test. Instead, they are used to aggregate
1263 tests into groups of tests that should be run together. Some additional
1264 methods are available to add tests to :class:`TestSuite` instances:
Benjamin Peterson99721e02009-03-23 23:10:14 +00001265
1266
1267 .. method:: TestSuite.addTest(test)
1268
1269 Add a :class:`TestCase` or :class:`TestSuite` to the suite.
1270
1271
1272 .. method:: TestSuite.addTests(tests)
1273
1274 Add all the tests from an iterable of :class:`TestCase` and :class:`TestSuite`
1275 instances to this test suite.
1276
Georg Brandl2fcd1732009-05-30 10:45:40 +00001277 This is equivalent to iterating over *tests*, calling :meth:`addTest` for
1278 each element.
Benjamin Peterson99721e02009-03-23 23:10:14 +00001279
1280 :class:`TestSuite` shares the following methods with :class:`TestCase`:
1281
1282
1283 .. method:: run(result)
1284
1285 Run the tests associated with this suite, collecting the result into the
1286 test result object passed as *result*. Note that unlike
1287 :meth:`TestCase.run`, :meth:`TestSuite.run` requires the result object to
1288 be passed in.
1289
1290
1291 .. method:: debug()
1292
1293 Run the tests associated with this suite without collecting the
1294 result. This allows exceptions raised by the test to be propagated to the
1295 caller and can be used to support running tests under a debugger.
1296
1297
1298 .. method:: countTestCases()
1299
1300 Return the number of tests represented by this test object, including all
1301 individual tests and sub-suites.
1302
Georg Brandl9bc66822009-04-27 17:04:23 +00001303
1304 .. method:: __iter__()
1305
1306 Tests grouped by a :class:`TestSuite` are always accessed by iteration.
1307 Subclasses can lazily provide tests by overriding :meth:`__iter__`. Note
1308 that this method maybe called several times on a single suite
1309 (for example when counting tests or comparing for equality)
1310 so the tests returned must be the same for repeated iterations.
1311
1312 .. versionchanged:: 2.7
1313 In earlier versions the :class:`TestSuite` accessed tests directly rather
1314 than through iteration, so overriding :meth:`__iter__` wasn't sufficient
1315 for providing tests.
1316
Benjamin Peterson99721e02009-03-23 23:10:14 +00001317 In the typical usage of a :class:`TestSuite` object, the :meth:`run` method
1318 is invoked by a :class:`TestRunner` rather than by the end-user test harness.
1319
1320
Benjamin Peterson99721e02009-03-23 23:10:14 +00001321Loading and running tests
1322~~~~~~~~~~~~~~~~~~~~~~~~~
1323
Georg Brandl8ec7f652007-08-15 14:28:01 +00001324.. class:: TestLoader()
1325
Benjamin Peterson99721e02009-03-23 23:10:14 +00001326 The :class:`TestLoader` class is used to create test suites from classes and
1327 modules. Normally, there is no need to create an instance of this class; the
1328 :mod:`unittest` module provides an instance that can be shared as
1329 ``unittest.defaultTestLoader``. Using a subclass or instance, however, allows
1330 customization of some configurable properties.
1331
1332 :class:`TestLoader` objects have the following methods:
Georg Brandl8ec7f652007-08-15 14:28:01 +00001333
1334
Benjamin Peterson99721e02009-03-23 23:10:14 +00001335 .. method:: loadTestsFromTestCase(testCaseClass)
Georg Brandl8ec7f652007-08-15 14:28:01 +00001336
Benjamin Peterson99721e02009-03-23 23:10:14 +00001337 Return a suite of all tests cases contained in the :class:`TestCase`\ -derived
1338 :class:`testCaseClass`.
1339
1340
1341 .. method:: loadTestsFromModule(module)
1342
1343 Return a suite of all tests cases contained in the given module. This
1344 method searches *module* for classes derived from :class:`TestCase` and
1345 creates an instance of the class for each test method defined for the
1346 class.
1347
Georg Brandl16a57f62009-04-27 15:29:09 +00001348 .. note::
Benjamin Peterson99721e02009-03-23 23:10:14 +00001349
1350 While using a hierarchy of :class:`TestCase`\ -derived classes can be
1351 convenient in sharing fixtures and helper functions, defining test
1352 methods on base classes that are not intended to be instantiated
1353 directly does not play well with this method. Doing so, however, can
1354 be useful when the fixtures are different and defined in subclasses.
1355
Michael Foordb4a81c82009-05-29 20:33:46 +00001356 If a module provides a ``load_tests`` function it will be called to
1357 load the tests. This allows modules to customize test loading.
1358 This is the `load_tests protocol`_.
1359
1360 .. versionchanged:: 2.7
1361 Support for ``load_tests`` added.
1362
Benjamin Peterson99721e02009-03-23 23:10:14 +00001363
1364 .. method:: loadTestsFromName(name[, module])
1365
1366 Return a suite of all tests cases given a string specifier.
1367
1368 The specifier *name* is a "dotted name" that may resolve either to a
1369 module, a test case class, a test method within a test case class, a
1370 :class:`TestSuite` instance, or a callable object which returns a
1371 :class:`TestCase` or :class:`TestSuite` instance. These checks are
1372 applied in the order listed here; that is, a method on a possible test
1373 case class will be picked up as "a test method within a test case class",
1374 rather than "a callable object".
1375
1376 For example, if you have a module :mod:`SampleTests` containing a
Georg Brandl2fcd1732009-05-30 10:45:40 +00001377 :class:`TestCase`\ -derived class :class:`SampleTestCase` with three test
1378 methods (:meth:`test_one`, :meth:`test_two`, and :meth:`test_three`), the
1379 specifier ``'SampleTests.SampleTestCase'`` would cause this method to
1380 return a suite which will run all three test methods. Using the specifier
1381 ``'SampleTests.SampleTestCase.test_two'`` would cause it to return a test
1382 suite which will run only the :meth:`test_two` test method. The specifier
1383 can refer to modules and packages which have not been imported; they will
1384 be imported as a side-effect.
Benjamin Peterson99721e02009-03-23 23:10:14 +00001385
1386 The method optionally resolves *name* relative to the given *module*.
1387
1388
1389 .. method:: loadTestsFromNames(names[, module])
1390
1391 Similar to :meth:`loadTestsFromName`, but takes a sequence of names rather
1392 than a single name. The return value is a test suite which supports all
1393 the tests defined for each name.
1394
1395
1396 .. method:: getTestCaseNames(testCaseClass)
1397
1398 Return a sorted sequence of method names found within *testCaseClass*;
1399 this should be a subclass of :class:`TestCase`.
1400
Michael Foordb4a81c82009-05-29 20:33:46 +00001401
1402 .. method:: discover(start_dir, pattern='test*.py', top_level_dir=None)
1403
1404 Find and return all test modules from the specified start directory,
1405 recursing into subdirectories to find them. Only test files that match
Michael Foorde91ea562009-09-13 19:07:03 +00001406 *pattern* will be loaded. (Using shell style pattern matching.) Only
1407 module names that are importable (i.e. are valid Python identifiers) will
1408 be loaded.
Michael Foordb4a81c82009-05-29 20:33:46 +00001409
1410 All test modules must be importable from the top level of the project. If
1411 the start directory is not the top level directory then the top level
1412 directory must be specified separately.
1413
Michael Foorde91ea562009-09-13 19:07:03 +00001414 If importing a module fails, for example due to a syntax error, then this
1415 will be recorded as a single error and discovery will continue.
1416
Michael Foordb4a81c82009-05-29 20:33:46 +00001417 If a test package name (directory with :file:`__init__.py`) matches the
1418 pattern then the package will be checked for a ``load_tests``
1419 function. If this exists then it will be called with *loader*, *tests*,
1420 *pattern*.
1421
Michael Foorddc0460a2009-09-13 19:08:18 +00001422 If load_tests exists then discovery does *not* recurse into the package,
Michael Foordb4a81c82009-05-29 20:33:46 +00001423 ``load_tests`` is responsible for loading all tests in the package.
1424
1425 The pattern is deliberately not stored as a loader attribute so that
1426 packages can continue discovery themselves. *top_level_dir* is stored so
1427 ``load_tests`` does not need to pass this argument in to
1428 ``loader.discover()``.
1429
Michael Foordba097ec2010-04-03 17:03:11 +00001430 *start_dir* can be a dotted module name as well as a directory.
1431
Michael Foord17565e52009-09-27 20:08:23 +00001432 .. versionadded:: 2.7
Michael Foordb4a81c82009-05-29 20:33:46 +00001433
Benjamin Peterson99721e02009-03-23 23:10:14 +00001434 The following attributes of a :class:`TestLoader` can be configured either by
1435 subclassing or assignment on an instance:
1436
1437
1438 .. attribute:: testMethodPrefix
1439
1440 String giving the prefix of method names which will be interpreted as test
1441 methods. The default value is ``'test'``.
1442
1443 This affects :meth:`getTestCaseNames` and all the :meth:`loadTestsFrom\*`
1444 methods.
1445
1446
1447 .. attribute:: sortTestMethodsUsing
1448
1449 Function to be used to compare method names when sorting them in
1450 :meth:`getTestCaseNames` and all the :meth:`loadTestsFrom\*` methods. The
1451 default value is the built-in :func:`cmp` function; the attribute can also
1452 be set to :const:`None` to disable the sort.
1453
1454
1455 .. attribute:: suiteClass
1456
1457 Callable object that constructs a test suite from a list of tests. No
1458 methods on the resulting object are needed. The default value is the
1459 :class:`TestSuite` class.
1460
1461 This affects all the :meth:`loadTestsFrom\*` methods.
1462
1463
Benjamin Peterson99721e02009-03-23 23:10:14 +00001464.. class:: TestResult
1465
1466 This class is used to compile information about which tests have succeeded
1467 and which have failed.
1468
1469 A :class:`TestResult` object stores the results of a set of tests. The
1470 :class:`TestCase` and :class:`TestSuite` classes ensure that results are
1471 properly recorded; test authors do not need to worry about recording the
1472 outcome of tests.
1473
1474 Testing frameworks built on top of :mod:`unittest` may want access to the
1475 :class:`TestResult` object generated by running a set of tests for reporting
1476 purposes; a :class:`TestResult` instance is returned by the
1477 :meth:`TestRunner.run` method for this purpose.
1478
1479 :class:`TestResult` instances have the following attributes that will be of
1480 interest when inspecting the results of running a set of tests:
1481
1482
1483 .. attribute:: errors
1484
1485 A list containing 2-tuples of :class:`TestCase` instances and strings
1486 holding formatted tracebacks. Each tuple represents a test which raised an
1487 unexpected exception.
1488
1489 .. versionchanged:: 2.2
Benjamin Peterson99721e02009-03-23 23:10:14 +00001490 Contains formatted tracebacks instead of :func:`sys.exc_info` results.
1491
1492
1493 .. attribute:: failures
1494
1495 A list containing 2-tuples of :class:`TestCase` instances and strings
1496 holding formatted tracebacks. Each tuple represents a test where a failure
1497 was explicitly signalled using the :meth:`TestCase.fail\*` or
1498 :meth:`TestCase.assert\*` methods.
1499
1500 .. versionchanged:: 2.2
Benjamin Peterson99721e02009-03-23 23:10:14 +00001501 Contains formatted tracebacks instead of :func:`sys.exc_info` results.
1502
1503 .. attribute:: skipped
1504
1505 A list containing 2-tuples of :class:`TestCase` instances and strings
1506 holding the reason for skipping the test.
1507
1508 .. versionadded:: 2.7
1509
1510 .. attribute:: expectedFailures
1511
1512 A list contaning 2-tuples of :class:`TestCase` instances and strings
1513 holding formatted tracebacks. Each tuple represents a expected failures
1514 of the test case.
1515
1516 .. attribute:: unexpectedSuccesses
1517
1518 A list containing :class:`TestCase` instances that were marked as expected
1519 failures, but succeeded.
1520
1521 .. attribute:: shouldStop
1522
1523 Set to ``True`` when the execution of tests should stop by :meth:`stop`.
1524
1525
1526 .. attribute:: testsRun
1527
1528 The total number of tests run so far.
1529
1530
Michael Foordba097ec2010-04-03 17:03:11 +00001531 .. attribute:: buffer
1532
1533 If set to true, ``sys.stdout`` and ``sys.stderr`` will be buffered in between
1534 :meth:`startTest` and :meth:`stopTest` being called. Collected output will
1535 only be echoed onto the real ``sys.stdout`` and ``sys.stderr`` if the test
1536 fails or errors. Any output is also attached to the failure / error message.
1537
1538 .. versionadded:: 2.7
1539
1540
1541 .. attribute:: failfast
1542
1543 If set to true :meth:`stop` will be called on the first failure or error,
1544 halting the test run.
1545
1546 .. versionadded:: 2.7
1547
1548
Benjamin Peterson99721e02009-03-23 23:10:14 +00001549 .. method:: wasSuccessful()
1550
1551 Return :const:`True` if all tests run so far have passed, otherwise returns
1552 :const:`False`.
1553
1554
1555 .. method:: stop()
1556
1557 This method can be called to signal that the set of tests being run should
1558 be aborted by setting the :attr:`shouldStop` attribute to :const:`True`.
1559 :class:`TestRunner` objects should respect this flag and return without
1560 running any additional tests.
1561
1562 For example, this feature is used by the :class:`TextTestRunner` class to
1563 stop the test framework when the user signals an interrupt from the
1564 keyboard. Interactive tools which provide :class:`TestRunner`
1565 implementations can use this in a similar manner.
1566
1567 The following methods of the :class:`TestResult` class are used to maintain
1568 the internal data structures, and may be extended in subclasses to support
1569 additional reporting requirements. This is particularly useful in building
1570 tools which support interactive reporting while tests are being run.
1571
1572
1573 .. method:: startTest(test)
1574
1575 Called when the test case *test* is about to be run.
1576
Benjamin Peterson99721e02009-03-23 23:10:14 +00001577 .. method:: stopTest(test)
1578
1579 Called after the test case *test* has been executed, regardless of the
1580 outcome.
1581
Michael Foord07ef4872009-05-02 22:43:34 +00001582 .. method:: startTestRun(test)
1583
1584 Called once before any tests are executed.
1585
1586 .. versionadded:: 2.7
1587
1588
1589 .. method:: stopTestRun(test)
1590
Ezio Melotti7b4e02c2010-01-27 20:25:11 +00001591 Called once after all tests are executed.
Michael Foord07ef4872009-05-02 22:43:34 +00001592
1593 .. versionadded:: 2.7
1594
1595
Benjamin Peterson99721e02009-03-23 23:10:14 +00001596 .. method:: addError(test, err)
1597
1598 Called when the test case *test* raises an unexpected exception *err* is a
1599 tuple of the form returned by :func:`sys.exc_info`: ``(type, value,
1600 traceback)``.
1601
1602 The default implementation appends a tuple ``(test, formatted_err)`` to
1603 the instance's :attr:`errors` attribute, where *formatted_err* is a
1604 formatted traceback derived from *err*.
1605
1606
1607 .. method:: addFailure(test, err)
1608
Michael Foordb4a81c82009-05-29 20:33:46 +00001609 Called when the test case *test* signals a failure. *err* is a tuple of
1610 the form returned by :func:`sys.exc_info`: ``(type, value, traceback)``.
Benjamin Peterson99721e02009-03-23 23:10:14 +00001611
1612 The default implementation appends a tuple ``(test, formatted_err)`` to
1613 the instance's :attr:`failures` attribute, where *formatted_err* is a
1614 formatted traceback derived from *err*.
1615
1616
1617 .. method:: addSuccess(test)
1618
1619 Called when the test case *test* succeeds.
1620
1621 The default implementation does nothing.
1622
1623
1624 .. method:: addSkip(test, reason)
1625
1626 Called when the test case *test* is skipped. *reason* is the reason the
1627 test gave for skipping.
1628
1629 The default implementation appends a tuple ``(test, reason)`` to the
1630 instance's :attr:`skipped` attribute.
1631
1632
1633 .. method:: addExpectedFailure(test, err)
1634
1635 Called when the test case *test* fails, but was marked with the
1636 :func:`expectedFailure` decorator.
1637
1638 The default implementation appends a tuple ``(test, formatted_err)`` to
1639 the instance's :attr:`expectedFailures` attribute, where *formatted_err*
1640 is a formatted traceback derived from *err*.
1641
1642
1643 .. method:: addUnexpectedSuccess(test)
1644
1645 Called when the test case *test* was marked with the
1646 :func:`expectedFailure` decorator, but succeeded.
1647
1648 The default implementation appends the test to the instance's
1649 :attr:`unexpectedSuccesses` attribute.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001650
Michael Foorddb43b5a2010-02-10 14:25:12 +00001651.. class:: TextTestResult(stream, descriptions, verbosity)
1652
1653 A concrete implementation of :class:`TestResult` used by the
1654 :class:`TextTestRunner`.
1655
1656 .. versionadded:: 2.7
1657 This class was previously named ``_TextTestResult``. The old name still
1658 exists as an alias but is deprecated.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001659
1660.. data:: defaultTestLoader
1661
1662 Instance of the :class:`TestLoader` class intended to be shared. If no
1663 customization of the :class:`TestLoader` is needed, this instance can be used
1664 instead of repeatedly creating new instances.
1665
1666
Michael Foorddb43b5a2010-02-10 14:25:12 +00001667.. class:: TextTestRunner([stream[, descriptions[, verbosity], [resultclass]]])
Georg Brandl8ec7f652007-08-15 14:28:01 +00001668
1669 A basic test runner implementation which prints results on standard error. It
1670 has a few configurable parameters, but is essentially very simple. Graphical
1671 applications which run test suites should provide alternate implementations.
1672
Georg Brandl9bc66822009-04-27 17:04:23 +00001673 .. method:: _makeResult()
1674
1675 This method returns the instance of ``TestResult`` used by :meth:`run`.
1676 It is not intended to be called directly, but can be overridden in
1677 subclasses to provide a custom ``TestResult``.
1678
Michael Foorddb43b5a2010-02-10 14:25:12 +00001679 ``_makeResult()`` instantiates the class or callable passed in the
1680 ``TextTestRunner`` constructor as the ``resultclass`` argument. It
Michael Foordefc2f492010-04-08 04:33:20 +00001681 defaults to :class:`TextTestResult` if no ``resultclass`` is provided.
Michael Foorddb43b5a2010-02-10 14:25:12 +00001682 The result class is instantiated with the following arguments::
1683
1684 stream, descriptions, verbosity
1685
Georg Brandl8ec7f652007-08-15 14:28:01 +00001686
Michael Foordddb20df2010-04-04 23:28:44 +00001687.. function:: main([module[, defaultTest[, argv[, testRunner[, testLoader[, exit[, verbosity[, failfast[, catchbreak[,buffer]]]]]]]]]])
Michael Foord55430352010-04-05 00:39:50 +00001688
Georg Brandl8ec7f652007-08-15 14:28:01 +00001689 A command-line program that runs a set of tests; this is primarily for making
1690 test modules conveniently executable. The simplest use for this function is to
1691 include the following line at the end of a test script::
1692
1693 if __name__ == '__main__':
1694 unittest.main()
1695
Michael Foord5d31e052009-05-11 17:59:43 +00001696 You can run tests with more detailed information by passing in the verbosity
1697 argument::
1698
1699 if __name__ == '__main__':
1700 unittest.main(verbosity=2)
1701
Georg Brandl8ec7f652007-08-15 14:28:01 +00001702 The *testRunner* argument can either be a test runner class or an already
Michael Foord829f6b82009-05-02 11:43:06 +00001703 created instance of it. By default ``main`` calls :func:`sys.exit` with
1704 an exit code indicating success or failure of the tests run.
1705
1706 ``main`` supports being used from the interactive interpreter by passing in the
1707 argument ``exit=False``. This displays the result on standard output without
1708 calling :func:`sys.exit`::
1709
1710 >>> from unittest import main
1711 >>> main(module='test_module', exit=False)
1712
Michael Foordddb20df2010-04-04 23:28:44 +00001713 The ``failfast``, ``catchbreak`` and ``buffer`` parameters have the same
1714 effect as the `failfast, catch and buffer command line options`_.
1715
Michael Foord829f6b82009-05-02 11:43:06 +00001716 Calling ``main`` actually returns an instance of the ``TestProgram`` class.
1717 This stores the result of the tests run as the ``result`` attribute.
1718
1719 .. versionchanged:: 2.7
Michael Foordddb20df2010-04-04 23:28:44 +00001720 The ``exit``, ``verbosity``, ``failfast``, ``catchbreak`` and ``buffer``
1721 parameters were added.
Michael Foordb4a81c82009-05-29 20:33:46 +00001722
1723
1724load_tests Protocol
1725###################
1726
Michael Foord17565e52009-09-27 20:08:23 +00001727
1728.. versionadded:: 2.7
1729
1730
Michael Foordb4a81c82009-05-29 20:33:46 +00001731Modules or packages can customize how tests are loaded from them during normal
1732test runs or test discovery by implementing a function called ``load_tests``.
1733
1734If a test module defines ``load_tests`` it will be called by
1735:meth:`TestLoader.loadTestsFromModule` with the following arguments::
1736
1737 load_tests(loader, standard_tests, None)
1738
1739It should return a :class:`TestSuite`.
1740
1741*loader* is the instance of :class:`TestLoader` doing the loading.
1742*standard_tests* are the tests that would be loaded by default from the
1743module. It is common for test modules to only want to add or remove tests
1744from the standard set of tests.
1745The third argument is used when loading packages as part of test discovery.
1746
1747A typical ``load_tests`` function that loads tests from a specific set of
1748:class:`TestCase` classes may look like::
1749
1750 test_cases = (TestCase1, TestCase2, TestCase3)
1751
1752 def load_tests(loader, tests, pattern):
1753 suite = TestSuite()
1754 for test_class in test_cases:
1755 tests = loader.loadTestsFromTestCase(test_class)
1756 suite.addTests(tests)
1757 return suite
1758
1759If discovery is started, either from the command line or by calling
1760:meth:`TestLoader.discover`, with a pattern that matches a package
1761name then the package :file:`__init__.py` will be checked for ``load_tests``.
1762
1763.. note::
1764
Ezio Melotti062d2b52009-12-19 22:41:49 +00001765 The default pattern is 'test*.py'. This matches all Python files
Michael Foordb4a81c82009-05-29 20:33:46 +00001766 that start with 'test' but *won't* match any test directories.
1767
1768 A pattern like 'test*' will match test packages as well as
1769 modules.
1770
1771If the package :file:`__init__.py` defines ``load_tests`` then it will be
1772called and discovery not continued into the package. ``load_tests``
1773is called with the following arguments::
1774
1775 load_tests(loader, standard_tests, pattern)
1776
1777This should return a :class:`TestSuite` representing all the tests
1778from the package. (``standard_tests`` will only contain tests
1779collected from :file:`__init__.py`.)
1780
1781Because the pattern is passed into ``load_tests`` the package is free to
1782continue (and potentially modify) test discovery. A 'do nothing'
1783``load_tests`` function for a test package would look like::
1784
1785 def load_tests(loader, standard_tests, pattern):
1786 # top level directory cached on loader instance
1787 this_dir = os.path.dirname(__file__)
1788 package_tests = loader.discover(start_dir=this_dir, pattern=pattern)
1789 standard_tests.addTests(package_tests)
1790 return standard_tests
Michael Foordba097ec2010-04-03 17:03:11 +00001791
1792
1793Class and Module Fixtures
1794-------------------------
1795
Michael Foord09e29802010-04-04 22:41:54 +00001796Class and module level fixtures are implemented in :class:`TestSuite`. When
1797the test suite encounters a test from a new class then :meth:`tearDownClass`
1798from the previous class (if there is one) is called, followed by
1799:meth:`setUpClass` from the new class.
Michael Foordba097ec2010-04-03 17:03:11 +00001800
Michael Foord09e29802010-04-04 22:41:54 +00001801Similarly if a test is from a different module from the previous test then
1802``tearDownModule`` from the previous module is run, followed by
1803``setUpModule`` from the new module.
Michael Foordba097ec2010-04-03 17:03:11 +00001804
Michael Foord09e29802010-04-04 22:41:54 +00001805After all the tests have run the final ``tearDownClass`` and
1806``tearDownModule`` are run.
Michael Foordba097ec2010-04-03 17:03:11 +00001807
Michael Foord09e29802010-04-04 22:41:54 +00001808Note that shared fixtures do not play well with [potential] features like test
1809parallelization and they break test isolation. They should be used with care.
Michael Foordba097ec2010-04-03 17:03:11 +00001810
Michael Foord09e29802010-04-04 22:41:54 +00001811The default ordering of tests created by the unittest test loaders is to group
1812all tests from the same modules and classes together. This will lead to
1813``setUpClass`` / ``setUpModule`` (etc) being called exactly once per class and
1814module. If you randomize the order, so that tests from different modules and
1815classes are adjacent to each other, then these shared fixture functions may be
1816called multiple times in a single test run.
Michael Foordba097ec2010-04-03 17:03:11 +00001817
Michael Foord09e29802010-04-04 22:41:54 +00001818Shared fixtures are not intended to work with suites with non-standard
1819ordering. A ``BaseTestSuite`` still exists for frameworks that don't want to
1820support shared fixtures.
Michael Foordba097ec2010-04-03 17:03:11 +00001821
Michael Foord09e29802010-04-04 22:41:54 +00001822If there are any exceptions raised during one of the shared fixture functions
1823the test is reported as an error. Because there is no corresponding test
1824instance an ``_ErrorHolder`` object (that has the same interface as a
1825:class:`TestCase`) is created to represent the error. If you are just using
1826the standard unittest test runner then this detail doesn't matter, but if you
1827are a framework author it may be relevant.
Michael Foordba097ec2010-04-03 17:03:11 +00001828
1829
1830setUpClass and tearDownClass
1831~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1832
1833These must be implemented as class methods::
1834
1835 import unittest
1836
1837 class Test(unittest.TestCase):
1838 @classmethod
1839 def setUpClass(cls):
1840 cls._connection = createExpensiveConnectionObject()
1841
1842 @classmethod
1843 def tearDownClass(cls):
1844 cls._connection.destroy()
1845
Michael Foord09e29802010-04-04 22:41:54 +00001846If you want the ``setUpClass`` and ``tearDownClass`` on base classes called
1847then you must call up to them yourself. The implementations in
1848:class:`TestCase` are empty.
Michael Foordba097ec2010-04-03 17:03:11 +00001849
Michael Foord09e29802010-04-04 22:41:54 +00001850If an exception is raised during a ``setUpClass`` then the tests in the class
1851are not run and the ``tearDownClass`` is not run. Skipped classes will not
1852have ``setUpClass`` or ``tearDownClass`` run.
Michael Foordba097ec2010-04-03 17:03:11 +00001853
1854
1855setUpModule and tearDownModule
1856~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1857
1858These should be implemented as functions::
1859
1860 def setUpModule():
1861 createConnection()
1862
1863 def tearDownModule():
1864 closeConnection()
1865
Michael Foord09e29802010-04-04 22:41:54 +00001866If an exception is raised in a ``setUpModule`` then none of the tests in the
1867module will be run and the ``tearDownModule`` will not be run.
Michael Foordba097ec2010-04-03 17:03:11 +00001868
1869
Michael Foord55430352010-04-05 00:39:50 +00001870Signal Handling
1871---------------
1872
Andrew M. Kuchlingfb759a22010-04-29 01:44:30 +00001873The :option:`-c`/:option:`--catch` command line option to unittest, along with the ``catchbreak``
Michael Foord55430352010-04-05 00:39:50 +00001874parameter to :func:`unittest.main()`, provide more friendly handling of
Andrew M. Kuchlingfb759a22010-04-29 01:44:30 +00001875control-C during a test run. With catch break behavior enabled control-C will
Michael Foord55430352010-04-05 00:39:50 +00001876allow the currently running test to complete, and the test run will then end
1877and report all the results so far. A second control-c will raise a
Andrew M. Kuchlingfb759a22010-04-29 01:44:30 +00001878:exc:`KeyboardInterrupt` in the usual way.
Michael Foord55430352010-04-05 00:39:50 +00001879
Michael Foord5c322ec2010-04-25 19:02:46 +00001880The control-c handling signal handler attempts to remain compatible with code or
1881tests that install their own :const:`signal.SIGINT` handler. If the ``unittest``
1882handler is called but *isn't* the installed :const:`signal.SIGINT` handler,
1883i.e. it has been replaced by the system under test and delegated to, then it
1884calls the default handler. This will normally be the expected behavior by code
1885that replaces an installed handler and delegates to it. For individual tests
1886that need ``unittest`` control-c handling disabled the :func:`removeHandler`
1887decorator can be used.
1888
1889There are a few utility functions for framework authors to enable control-c
1890handling functionality within test frameworks.
Michael Foord55430352010-04-05 00:39:50 +00001891
1892.. function:: installHandler()
1893
Michael Foord31655032010-04-05 10:26:26 +00001894 Install the control-c handler. When a :const:`signal.SIGINT` is received
1895 (usually in response to the user pressing control-c) all registered results
Michael Foord55430352010-04-05 00:39:50 +00001896 have :meth:`~TestResult.stop` called.
1897
Michael Foord47b54402010-04-26 23:36:47 +00001898 .. versionadded:: 2.7
1899
Michael Foord55430352010-04-05 00:39:50 +00001900.. function:: registerResult(result)
1901
Michael Foord31655032010-04-05 10:26:26 +00001902 Register a :class:`TestResult` object for control-c handling. Registering a
Michael Foord55430352010-04-05 00:39:50 +00001903 result stores a weak reference to it, so it doesn't prevent the result from
1904 being garbage collected.
1905
Michael Foord5c322ec2010-04-25 19:02:46 +00001906 Registering a :class:`TestResult` object has no side-effects if control-c
1907 handling is not enabled, so test frameworks can unconditionally register
1908 all results they create independently of whether or not handling is enabled.
1909
Michael Foord47b54402010-04-26 23:36:47 +00001910 .. versionadded:: 2.7
1911
Michael Foord55430352010-04-05 00:39:50 +00001912.. function:: removeResult(result)
1913
Michael Foord31655032010-04-05 10:26:26 +00001914 Remove a registered result. Once a result has been removed then
Michael Foordd341ec82010-04-05 10:30:14 +00001915 :meth:`~TestResult.stop` will no longer be called on that result object in
Michael Foord31655032010-04-05 10:26:26 +00001916 response to a control-c.
Michael Foord55430352010-04-05 00:39:50 +00001917
Michael Foord47b54402010-04-26 23:36:47 +00001918 .. versionadded:: 2.7
1919
Michael Foord5c322ec2010-04-25 19:02:46 +00001920.. function:: removeHandler(function=None)
1921
1922 When called without arguments this function removes the control-c handler
1923 if it has been installed. This function can also be used as a test decorator
1924 to temporarily remove the handler whilst the test is being executed::
1925
1926 @unittest.removeHandler
1927 def test_signal_handling(self):
1928 ...
1929
Michael Foord47b54402010-04-26 23:36:47 +00001930 .. versionadded:: 2.7
1931