blob: 68ad8ccbf2d6950750331b92b75ebffc9f8cd032 [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
Georg Brandld198b762009-05-31 14:15:25 +000079 `Simple Smalltalk Testing: With Patterns <http://www.XProgramming.com/testfram.htm>`_
Georg Brandl2fcd1732009-05-30 10:45:40 +000080 Kent Beck's original paper on testing frameworks using the pattern shared
81 by :mod:`unittest`.
Georg Brandl8ec7f652007-08-15 14:28:01 +000082
Georg Brandld198b762009-05-31 14:15:25 +000083 `Nose <http://code.google.com/p/python-nose/>`_ and `py.test <http://pytest.org>`_
Georg Brandl2fcd1732009-05-30 10:45:40 +000084 Third-party unittest frameworks with a lighter-weight syntax for writing
85 tests. For example, ``assert func(10) == 42``.
Raymond Hettinger21b617b2009-03-24 00:17:11 +000086
Georg Brandld198b762009-05-31 14:15:25 +000087 `python-mock <http://python-mock.sourceforge.net/>`_ and `minimock <http://blog.ianbicking.org/minimock.html>`_
Georg Brandl2fcd1732009-05-30 10:45:40 +000088 Tools for creating mock test objects (objects simulating external
89 resources).
Georg Brandl8ec7f652007-08-15 14:28:01 +000090
Michael Foordb4a81c82009-05-29 20:33:46 +000091
Michael Foordb4a81c82009-05-29 20:33:46 +000092
Michael Foord5d31e052009-05-11 17:59:43 +000093
Georg Brandl8ec7f652007-08-15 14:28:01 +000094.. _unittest-minimal-example:
95
96Basic example
97-------------
98
99The :mod:`unittest` module provides a rich set of tools for constructing and
100running tests. This section demonstrates that a small subset of the tools
101suffice to meet the needs of most users.
102
103Here is a short script to test three functions from the :mod:`random` module::
104
105 import random
106 import unittest
107
108 class TestSequenceFunctions(unittest.TestCase):
109
110 def setUp(self):
111 self.seq = range(10)
112
Benjamin Peterson99721e02009-03-23 23:10:14 +0000113 def test_shuffle(self):
Georg Brandl8ec7f652007-08-15 14:28:01 +0000114 # make sure the shuffled sequence does not lose any elements
115 random.shuffle(self.seq)
116 self.seq.sort()
117 self.assertEqual(self.seq, range(10))
118
Benjamin Peterson99721e02009-03-23 23:10:14 +0000119 def test_choice(self):
Georg Brandl8ec7f652007-08-15 14:28:01 +0000120 element = random.choice(self.seq)
Ezio Melotti85ee3e12010-02-04 20:06:38 +0000121 self.assertIn(element, self.seq)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000122
Benjamin Peterson99721e02009-03-23 23:10:14 +0000123 def test_sample(self):
Georg Brandl8ec7f652007-08-15 14:28:01 +0000124 self.assertRaises(ValueError, random.sample, self.seq, 20)
125 for element in random.sample(self.seq, 5):
Ezio Melotti85ee3e12010-02-04 20:06:38 +0000126 self.assertIn(element, self.seq)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000127
128 if __name__ == '__main__':
129 unittest.main()
130
Benjamin Peterson99721e02009-03-23 23:10:14 +0000131A testcase is created by subclassing :class:`unittest.TestCase`. The three
Georg Brandl8ec7f652007-08-15 14:28:01 +0000132individual tests are defined with methods whose names start with the letters
133``test``. This naming convention informs the test runner about which methods
134represent tests.
135
Benjamin Peterson99721e02009-03-23 23:10:14 +0000136The crux of each test is a call to :meth:`~TestCase.assertEqual` to check for an
Michael Foorddb43b5a2010-02-10 14:25:12 +0000137expected result; :meth:`~TestCase.assertTrue` to verify a condition; or
Benjamin Peterson99721e02009-03-23 23:10:14 +0000138:meth:`~TestCase.assertRaises` to verify that an expected exception gets raised.
139These methods are used instead of the :keyword:`assert` statement so the test
140runner can accumulate all test results and produce a report.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000141
Benjamin Peterson99721e02009-03-23 23:10:14 +0000142When a :meth:`~TestCase.setUp` method is defined, the test runner will run that
143method prior to each test. Likewise, if a :meth:`~TestCase.tearDown` method is
144defined, the test runner will invoke that method after each test. In the
145example, :meth:`~TestCase.setUp` was used to create a fresh sequence for each
146test.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000147
148The final block shows a simple way to run the tests. :func:`unittest.main`
149provides a command line interface to the test script. When run from the command
150line, the above script produces an output that looks like this::
151
152 ...
153 ----------------------------------------------------------------------
154 Ran 3 tests in 0.000s
155
156 OK
157
158Instead of :func:`unittest.main`, there are other ways to run the tests with a
159finer level of control, less terse output, and no requirement to be run from the
160command line. For example, the last two lines may be replaced with::
161
162 suite = unittest.TestLoader().loadTestsFromTestCase(TestSequenceFunctions)
163 unittest.TextTestRunner(verbosity=2).run(suite)
164
165Running the revised script from the interpreter or another script produces the
166following output::
167
Ezio Melotti68beef62010-02-28 03:11:07 +0000168 test_choice (__main__.TestSequenceFunctions) ... ok
169 test_sample (__main__.TestSequenceFunctions) ... ok
170 test_shuffle (__main__.TestSequenceFunctions) ... ok
Georg Brandl8ec7f652007-08-15 14:28:01 +0000171
172 ----------------------------------------------------------------------
173 Ran 3 tests in 0.110s
174
175 OK
176
177The above examples show the most commonly used :mod:`unittest` features which
178are sufficient to meet many everyday testing needs. The remainder of the
179documentation explores the full feature set from first principles.
180
Raymond Hettingerb09f1982009-05-29 21:20:41 +0000181
182.. _unittest-command-line-interface:
183
184Command Line Interface
185----------------------
186
187The unittest module can be used from the command line to run tests from
188modules, classes or even individual test methods::
189
190 python -m unittest test_module1 test_module2
191 python -m unittest test_module.TestClass
192 python -m unittest test_module.TestClass.test_method
193
194You can pass in a list with any combination of module names, and fully
195qualified class or method names.
196
197You can run tests with more detail (higher verbosity) by passing in the -v flag::
198
Ezio Melotti062d2b52009-12-19 22:41:49 +0000199 python -m unittest -v test_module
Raymond Hettingerb09f1982009-05-29 21:20:41 +0000200
201For a list of all the command line options::
202
203 python -m unittest -h
204
205.. versionchanged:: 2.7
206 In earlier versions it was only possible to run individual test methods and
207 not modules or classes.
208
209The command line can also be used for test discovery, for running all of the
210tests in a project or just a subset.
211
212
213.. _unittest-test-discovery:
214
215Test Discovery
216--------------
217
218.. versionadded:: 2.7
219
220Unittest supports simple test discovery. For a project's tests to be
221compatible with test discovery they must all be importable from the top level
222directory of the project (in other words, they must all be in Python packages).
223
224Test discovery is implemented in :meth:`TestLoader.discover`, but can also be
225used from the command line. The basic command line usage is::
226
227 cd project_directory
228 python -m unittest discover
229
230The ``discover`` sub-command has the following options:
231
232 -v, --verbose Verbose output
233 -s directory Directory to start discovery ('.' default)
234 -p pattern Pattern to match test files ('test*.py' default)
235 -t directory Top level directory of project (default to
236 start directory)
237
238The -s, -p, & -t options can be passsed in as positional arguments. The
239following two command lines are equivalent::
240
Ezio Melotti7b4e02c2010-01-27 20:25:11 +0000241 python -m unittest discover -s project_directory -p '*_test.py'
242 python -m unittest discover project_directory '*_test.py'
Raymond Hettingerb09f1982009-05-29 21:20:41 +0000243
244Test modules and packages can customize test loading and discovery by through
245the `load_tests protocol`_.
246
247
Georg Brandl8ec7f652007-08-15 14:28:01 +0000248.. _organizing-tests:
249
250Organizing test code
251--------------------
252
253The basic building blocks of unit testing are :dfn:`test cases` --- single
254scenarios that must be set up and checked for correctness. In :mod:`unittest`,
255test cases are represented by instances of :mod:`unittest`'s :class:`TestCase`
256class. To make your own test cases you must write subclasses of
257:class:`TestCase`, or use :class:`FunctionTestCase`.
258
259An instance of a :class:`TestCase`\ -derived class is an object that can
260completely run a single test method, together with optional set-up and tidy-up
261code.
262
263The testing code of a :class:`TestCase` instance should be entirely self
264contained, such that it can be run either in isolation or in arbitrary
265combination with any number of other test cases.
266
Benjamin Peterson99721e02009-03-23 23:10:14 +0000267The simplest :class:`TestCase` subclass will simply override the
268:meth:`~TestCase.runTest` method in order to perform specific testing code::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000269
270 import unittest
271
272 class DefaultWidgetSizeTestCase(unittest.TestCase):
273 def runTest(self):
274 widget = Widget('The widget')
275 self.assertEqual(widget.size(), (50, 50), 'incorrect default size')
276
Gregory P. Smith28399852009-03-31 16:54:10 +0000277Note that in order to test something, we use the one of the :meth:`assert\*`
Georg Brandl2fcd1732009-05-30 10:45:40 +0000278methods provided by the :class:`TestCase` base class. If the test fails, an
279exception will be raised, and :mod:`unittest` will identify the test case as a
280:dfn:`failure`. Any other exceptions will be treated as :dfn:`errors`. This
281helps you identify where the problem is: :dfn:`failures` are caused by incorrect
282results - a 5 where you expected a 6. :dfn:`Errors` are caused by incorrect
283code - e.g., a :exc:`TypeError` caused by an incorrect function call.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000284
285The way to run a test case will be described later. For now, note that to
286construct an instance of such a test case, we call its constructor without
287arguments::
288
289 testCase = DefaultWidgetSizeTestCase()
290
291Now, such test cases can be numerous, and their set-up can be repetitive. In
292the above case, constructing a :class:`Widget` in each of 100 Widget test case
293subclasses would mean unsightly duplication.
294
295Luckily, we can factor out such set-up code by implementing a method called
Benjamin Peterson99721e02009-03-23 23:10:14 +0000296:meth:`~TestCase.setUp`, which the testing framework will automatically call for
297us when we run the test::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000298
299 import unittest
300
301 class SimpleWidgetTestCase(unittest.TestCase):
302 def setUp(self):
303 self.widget = Widget('The widget')
304
305 class DefaultWidgetSizeTestCase(SimpleWidgetTestCase):
306 def runTest(self):
Ezio Melotti85ee3e12010-02-04 20:06:38 +0000307 self.assertEqual(self.widget.size(), (50,50),
308 'incorrect default size')
Georg Brandl8ec7f652007-08-15 14:28:01 +0000309
310 class WidgetResizeTestCase(SimpleWidgetTestCase):
311 def runTest(self):
312 self.widget.resize(100,150)
Ezio Melotti85ee3e12010-02-04 20:06:38 +0000313 self.assertEqual(self.widget.size(), (100,150),
314 'wrong size after resize')
Georg Brandl8ec7f652007-08-15 14:28:01 +0000315
Benjamin Peterson99721e02009-03-23 23:10:14 +0000316If the :meth:`~TestCase.setUp` method raises an exception while the test is
317running, the framework will consider the test to have suffered an error, and the
318:meth:`~TestCase.runTest` method will not be executed.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000319
Benjamin Peterson99721e02009-03-23 23:10:14 +0000320Similarly, we can provide a :meth:`~TestCase.tearDown` method that tidies up
321after the :meth:`~TestCase.runTest` method has been run::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000322
323 import unittest
324
325 class SimpleWidgetTestCase(unittest.TestCase):
326 def setUp(self):
327 self.widget = Widget('The widget')
328
329 def tearDown(self):
330 self.widget.dispose()
331 self.widget = None
332
Benjamin Peterson99721e02009-03-23 23:10:14 +0000333If :meth:`~TestCase.setUp` succeeded, the :meth:`~TestCase.tearDown` method will
334be run whether :meth:`~TestCase.runTest` succeeded or not.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000335
336Such a working environment for the testing code is called a :dfn:`fixture`.
337
338Often, many small test cases will use the same fixture. In this case, we would
339end up subclassing :class:`SimpleWidgetTestCase` into many small one-method
340classes such as :class:`DefaultWidgetSizeTestCase`. This is time-consuming and
Georg Brandl8ec7f652007-08-15 14:28:01 +0000341discouraging, so in the same vein as JUnit, :mod:`unittest` provides a simpler
342mechanism::
343
344 import unittest
345
346 class WidgetTestCase(unittest.TestCase):
347 def setUp(self):
348 self.widget = Widget('The widget')
349
350 def tearDown(self):
351 self.widget.dispose()
352 self.widget = None
353
Ezio Melotti68beef62010-02-28 03:11:07 +0000354 def test_default_size(self):
Ezio Melotti85ee3e12010-02-04 20:06:38 +0000355 self.assertEqual(self.widget.size(), (50,50),
356 'incorrect default size')
Georg Brandl8ec7f652007-08-15 14:28:01 +0000357
Ezio Melotti68beef62010-02-28 03:11:07 +0000358 def test_resize(self):
Georg Brandl8ec7f652007-08-15 14:28:01 +0000359 self.widget.resize(100,150)
Ezio Melotti85ee3e12010-02-04 20:06:38 +0000360 self.assertEqual(self.widget.size(), (100,150),
361 'wrong size after resize')
Georg Brandl8ec7f652007-08-15 14:28:01 +0000362
Benjamin Peterson99721e02009-03-23 23:10:14 +0000363Here we have not provided a :meth:`~TestCase.runTest` method, but have instead
364provided two different test methods. Class instances will now each run one of
Ezio Melotti68beef62010-02-28 03:11:07 +0000365the :meth:`test_\*` methods, with ``self.widget`` created and destroyed
Benjamin Peterson99721e02009-03-23 23:10:14 +0000366separately for each instance. When creating an instance we must specify the
367test method it is to run. We do this by passing the method name in the
368constructor::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000369
Ezio Melotti68beef62010-02-28 03:11:07 +0000370 defaultSizeTestCase = WidgetTestCase('test_default_size')
371 resizeTestCase = WidgetTestCase('test_resize')
Georg Brandl8ec7f652007-08-15 14:28:01 +0000372
373Test case instances are grouped together according to the features they test.
374:mod:`unittest` provides a mechanism for this: the :dfn:`test suite`,
375represented by :mod:`unittest`'s :class:`TestSuite` class::
376
377 widgetTestSuite = unittest.TestSuite()
Ezio Melotti68beef62010-02-28 03:11:07 +0000378 widgetTestSuite.addTest(WidgetTestCase('test_default_size'))
379 widgetTestSuite.addTest(WidgetTestCase('test_resize'))
Georg Brandl8ec7f652007-08-15 14:28:01 +0000380
381For the ease of running tests, as we will see later, it is a good idea to
382provide in each test module a callable object that returns a pre-built test
383suite::
384
385 def suite():
386 suite = unittest.TestSuite()
Ezio Melotti68beef62010-02-28 03:11:07 +0000387 suite.addTest(WidgetTestCase('test_default_size'))
388 suite.addTest(WidgetTestCase('test_resize'))
Georg Brandl8ec7f652007-08-15 14:28:01 +0000389 return suite
390
391or even::
392
393 def suite():
Ezio Melotti68beef62010-02-28 03:11:07 +0000394 tests = ['test_default_size', 'test_resize']
Georg Brandl8ec7f652007-08-15 14:28:01 +0000395
396 return unittest.TestSuite(map(WidgetTestCase, tests))
397
398Since it is a common pattern to create a :class:`TestCase` subclass with many
399similarly named test functions, :mod:`unittest` provides a :class:`TestLoader`
400class that can be used to automate the process of creating a test suite and
401populating it with individual tests. For example, ::
402
403 suite = unittest.TestLoader().loadTestsFromTestCase(WidgetTestCase)
404
Ezio Melotti68beef62010-02-28 03:11:07 +0000405will create a test suite that will run ``WidgetTestCase.test_default_size()`` and
406``WidgetTestCase.test_resize``. :class:`TestLoader` uses the ``'test'`` method
Georg Brandl8ec7f652007-08-15 14:28:01 +0000407name prefix to identify test methods automatically.
408
409Note that the order in which the various test cases will be run is determined by
410sorting the test function names with the built-in :func:`cmp` function.
411
412Often it is desirable to group suites of test cases together, so as to run tests
413for the whole system at once. This is easy, since :class:`TestSuite` instances
414can be added to a :class:`TestSuite` just as :class:`TestCase` instances can be
415added to a :class:`TestSuite`::
416
417 suite1 = module1.TheTestSuite()
418 suite2 = module2.TheTestSuite()
419 alltests = unittest.TestSuite([suite1, suite2])
420
421You can place the definitions of test cases and test suites in the same modules
422as the code they are to test (such as :file:`widget.py`), but there are several
423advantages to placing the test code in a separate module, such as
424:file:`test_widget.py`:
425
426* The test module can be run standalone from the command line.
427
428* The test code can more easily be separated from shipped code.
429
430* There is less temptation to change test code to fit the code it tests without
431 a good reason.
432
433* Test code should be modified much less frequently than the code it tests.
434
435* Tested code can be refactored more easily.
436
437* Tests for modules written in C must be in separate modules anyway, so why not
438 be consistent?
439
440* If the testing strategy changes, there is no need to change the source code.
441
442
443.. _legacy-unit-tests:
444
445Re-using old test code
446----------------------
447
448Some users will find that they have existing test code that they would like to
449run from :mod:`unittest`, without converting every old test function to a
450:class:`TestCase` subclass.
451
452For this reason, :mod:`unittest` provides a :class:`FunctionTestCase` class.
453This subclass of :class:`TestCase` can be used to wrap an existing test
454function. Set-up and tear-down functions can also be provided.
455
456Given the following test function::
457
458 def testSomething():
459 something = makeSomething()
460 assert something.name is not None
461 # ...
462
463one can create an equivalent test case instance as follows::
464
465 testcase = unittest.FunctionTestCase(testSomething)
466
467If there are additional set-up and tear-down methods that should be called as
468part of the test case's operation, they can also be provided like so::
469
470 testcase = unittest.FunctionTestCase(testSomething,
471 setUp=makeSomethingDB,
472 tearDown=deleteSomethingDB)
473
474To make migrating existing test suites easier, :mod:`unittest` supports tests
475raising :exc:`AssertionError` to indicate test failure. However, it is
476recommended that you use the explicit :meth:`TestCase.fail\*` and
477:meth:`TestCase.assert\*` methods instead, as future versions of :mod:`unittest`
478may treat :exc:`AssertionError` differently.
479
480.. note::
481
Georg Brandl2fcd1732009-05-30 10:45:40 +0000482 Even though :class:`FunctionTestCase` can be used to quickly convert an
483 existing test base over to a :mod:`unittest`\ -based system, this approach is
484 not recommended. Taking the time to set up proper :class:`TestCase`
485 subclasses will make future test refactorings infinitely easier.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000486
Benjamin Peterson99721e02009-03-23 23:10:14 +0000487In some cases, the existing tests may have been written using the :mod:`doctest`
488module. If so, :mod:`doctest` provides a :class:`DocTestSuite` class that can
489automatically build :class:`unittest.TestSuite` instances from the existing
490:mod:`doctest`\ -based tests.
491
Georg Brandl8ec7f652007-08-15 14:28:01 +0000492
Benjamin Peterson692428e2009-03-23 21:50:21 +0000493.. _unittest-skipping:
494
495Skipping tests and expected failures
496------------------------------------
497
Michael Foordfb0844b2010-02-05 21:45:12 +0000498.. versionadded:: 2.7
499
Benjamin Peterson692428e2009-03-23 21:50:21 +0000500Unittest supports skipping individual test methods and even whole classes of
501tests. In addition, it supports marking a test as a "expected failure," a test
502that is broken and will fail, but shouldn't be counted as a failure on a
503:class:`TestResult`.
504
505Skipping a test is simply a matter of using the :func:`skip` :term:`decorator`
506or one of its conditional variants.
507
508Basic skipping looks like this: ::
509
510 class MyTestCase(unittest.TestCase):
511
512 @unittest.skip("demonstrating skipping")
513 def test_nothing(self):
514 self.fail("shouldn't happen")
515
Georg Brandl2fcd1732009-05-30 10:45:40 +0000516 @unittest.skipIf(mylib.__version__ < (1, 3),
517 "not supported in this library version")
Benjamin Petersonbe76d4c2009-03-29 03:16:57 +0000518 def test_format(self):
Benjamin Peterson097aafd2009-03-29 03:39:58 +0000519 # Tests that work for only a certain version of the library.
Benjamin Petersonbe76d4c2009-03-29 03:16:57 +0000520 pass
521
522 @unittest.skipUnless(sys.platform.startswith("win"), "requires Windows")
523 def test_windows_support(self):
524 # windows specific testing code
525 pass
526
Benjamin Peterson692428e2009-03-23 21:50:21 +0000527This is the output of running the example above in verbose mode: ::
528
Benjamin Peterson097aafd2009-03-29 03:39:58 +0000529 test_format (__main__.MyTestCase) ... skipped 'not supported in this library version'
Benjamin Peterson692428e2009-03-23 21:50:21 +0000530 test_nothing (__main__.MyTestCase) ... skipped 'demonstrating skipping'
Benjamin Petersonbe76d4c2009-03-29 03:16:57 +0000531 test_windows_support (__main__.MyTestCase) ... skipped 'requires Windows'
Benjamin Peterson692428e2009-03-23 21:50:21 +0000532
533 ----------------------------------------------------------------------
Benjamin Petersonbe76d4c2009-03-29 03:16:57 +0000534 Ran 3 tests in 0.005s
535
536 OK (skipped=3)
Benjamin Peterson692428e2009-03-23 21:50:21 +0000537
538Classes can be skipped just like methods: ::
539
540 @skip("showing class skipping")
541 class MySkippedTestCase(unittest.TestCase):
542 def test_not_run(self):
543 pass
544
Benjamin Peterson31b78062009-03-23 23:13:36 +0000545:meth:`TestCase.setUp` can also skip the test. This is useful when a resource
546that needs to be set up is not available.
547
Benjamin Peterson692428e2009-03-23 21:50:21 +0000548Expected failures use the :func:`expectedFailure` decorator. ::
549
550 class ExpectedFailureTestCase(unittest.TestCase):
551 @unittest.expectedFailure
552 def test_fail(self):
553 self.assertEqual(1, 0, "broken")
554
555It's easy to roll your own skipping decorators by making a decorator that calls
556:func:`skip` on the test when it wants it to be skipped. This decorator skips
557the test unless the passed object has a certain attribute: ::
558
559 def skipUnlessHasattr(obj, attr):
560 if hasattr(obj, attr):
561 return lambda func: func
562 return unittest.skip("{0!r} doesn't have {1!r}".format(obj, attr))
563
564The following decorators implement test skipping and expected failures:
565
566.. function:: skip(reason)
567
568 Unconditionally skip the decorated test. *reason* should describe why the
569 test is being skipped.
570
571.. function:: skipIf(condition, reason)
572
573 Skip the decorated test if *condition* is true.
574
575.. function:: skipUnless(condition, reason)
576
577 Skip the decoratored test unless *condition* is true.
578
579.. function:: expectedFailure
580
581 Mark the test as an expected failure. If the test fails when run, the test
582 is not counted as a failure.
583
584
Georg Brandl8ec7f652007-08-15 14:28:01 +0000585.. _unittest-contents:
586
587Classes and functions
588---------------------
589
Benjamin Peterson99721e02009-03-23 23:10:14 +0000590This section describes in depth the API of :mod:`unittest`.
591
592
593.. _testcase-objects:
594
595Test cases
596~~~~~~~~~~
Georg Brandl8ec7f652007-08-15 14:28:01 +0000597
598.. class:: TestCase([methodName])
599
600 Instances of the :class:`TestCase` class represent the smallest testable units
601 in the :mod:`unittest` universe. This class is intended to be used as a base
602 class, with specific tests being implemented by concrete subclasses. This class
603 implements the interface needed by the test runner to allow it to drive the
604 test, and methods that the test code can use to check for and report various
605 kinds of failure.
606
607 Each instance of :class:`TestCase` will run a single test method: the method
608 named *methodName*. If you remember, we had an earlier example that went
609 something like this::
610
611 def suite():
612 suite = unittest.TestSuite()
Ezio Melotti68beef62010-02-28 03:11:07 +0000613 suite.addTest(WidgetTestCase('test_default_size'))
614 suite.addTest(WidgetTestCase('test_resize'))
Georg Brandl8ec7f652007-08-15 14:28:01 +0000615 return suite
616
617 Here, we create two instances of :class:`WidgetTestCase`, each of which runs a
618 single test.
619
Benjamin Peterson99721e02009-03-23 23:10:14 +0000620 *methodName* defaults to :meth:`runTest`.
621
622 :class:`TestCase` instances provide three groups of methods: one group used
623 to run the test, another used by the test implementation to check conditions
624 and report failures, and some inquiry methods allowing information about the
625 test itself to be gathered.
626
627 Methods in the first group (running the test) are:
628
629
630 .. method:: setUp()
631
632 Method called to prepare the test fixture. This is called immediately
633 before calling the test method; any exception raised by this method will
634 be considered an error rather than a test failure. The default
635 implementation does nothing.
636
637
638 .. method:: tearDown()
639
640 Method called immediately after the test method has been called and the
641 result recorded. This is called even if the test method raised an
642 exception, so the implementation in subclasses may need to be particularly
643 careful about checking internal state. Any exception raised by this
644 method will be considered an error rather than a test failure. This
645 method will only be called if the :meth:`setUp` succeeds, regardless of
646 the outcome of the test method. The default implementation does nothing.
647
648
649 .. method:: run([result])
650
651 Run the test, collecting the result into the test result object passed as
652 *result*. If *result* is omitted or :const:`None`, a temporary result
Ezio Melottic2f5a592009-06-30 22:51:06 +0000653 object is created (by calling the :meth:`defaultTestResult` method) and
654 used. The result object is not returned to :meth:`run`'s caller.
Benjamin Peterson99721e02009-03-23 23:10:14 +0000655
656 The same effect may be had by simply calling the :class:`TestCase`
657 instance.
658
659
Benjamin Peterson47d97382009-03-26 20:05:50 +0000660 .. method:: skipTest(reason)
Benjamin Peterson99721e02009-03-23 23:10:14 +0000661
Benjamin Peterson31b78062009-03-23 23:13:36 +0000662 Calling this during the a test method or :meth:`setUp` skips the current
663 test. See :ref:`unittest-skipping` for more information.
Benjamin Peterson99721e02009-03-23 23:10:14 +0000664
665
666 .. method:: debug()
667
668 Run the test without collecting the result. This allows exceptions raised
669 by the test to be propagated to the caller, and can be used to support
670 running tests under a debugger.
671
672 The test code can use any of the following methods to check for and report
673 failures.
674
675
Gregory P. Smith28399852009-03-31 16:54:10 +0000676 .. method:: assertTrue(expr[, msg])
677 assert_(expr[, msg])
Benjamin Peterson99721e02009-03-23 23:10:14 +0000678 failUnless(expr[, msg])
Benjamin Peterson99721e02009-03-23 23:10:14 +0000679
Georg Brandl64034bb2009-04-25 14:51:31 +0000680 Signal a test failure if *expr* is false; the explanation for the failure
Benjamin Peterson99721e02009-03-23 23:10:14 +0000681 will be *msg* if given, otherwise it will be :const:`None`.
682
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000683 .. deprecated:: 2.7
Georg Brandl1c7c7302010-02-06 10:08:21 +0000684 :meth:`failUnless`; use one of the ``assert`` variants.
Michael Foorddb43b5a2010-02-10 14:25:12 +0000685 :meth:`assert_`; use :meth:`assertTrue`.
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000686
Benjamin Peterson99721e02009-03-23 23:10:14 +0000687
688 .. method:: assertEqual(first, second[, msg])
689 failUnlessEqual(first, second[, msg])
690
691 Test that *first* and *second* are equal. If the values do not compare
692 equal, the test will fail with the explanation given by *msg*, or
Gregory P. Smith28399852009-03-31 16:54:10 +0000693 :const:`None`. Note that using :meth:`assertEqual` improves upon
694 doing the comparison as the first parameter to :meth:`assertTrue`: the
695 default value for *msg* include representations of both *first* and
696 *second*.
697
698 In addition, if *first* and *second* are the exact same type and one of
Michael Foordfe6349c2010-02-08 22:41:16 +0000699 list, tuple, dict, set, frozenset or unicode or any type that a subclass
Michael Foord7b5aa462010-02-08 23:15:22 +0000700 registers with :meth:`addTypeEqualityFunc` the type specific equality
701 function will be called in order to generate a more useful default error
702 message.
Gregory P. Smith28399852009-03-31 16:54:10 +0000703
704 .. versionchanged:: 2.7
705 Added the automatic calling of type specific equality function.
Benjamin Peterson99721e02009-03-23 23:10:14 +0000706
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000707 .. deprecated:: 2.7
Georg Brandl1c7c7302010-02-06 10:08:21 +0000708 :meth:`failUnlessEqual`; use :meth:`assertEqual`.
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000709
Benjamin Peterson99721e02009-03-23 23:10:14 +0000710
711 .. method:: assertNotEqual(first, second[, msg])
712 failIfEqual(first, second[, msg])
713
714 Test that *first* and *second* are not equal. If the values do compare
715 equal, the test will fail with the explanation given by *msg*, or
Gregory P. Smith28399852009-03-31 16:54:10 +0000716 :const:`None`. Note that using :meth:`assertNotEqual` improves upon doing
717 the comparison as the first parameter to :meth:`assertTrue` is that the
Benjamin Peterson99721e02009-03-23 23:10:14 +0000718 default value for *msg* can be computed to include representations of both
719 *first* and *second*.
720
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000721 .. deprecated:: 2.7
Georg Brandl1c7c7302010-02-06 10:08:21 +0000722 :meth:`failIfEqual`; use :meth:`assertNotEqual`.
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000723
Benjamin Peterson99721e02009-03-23 23:10:14 +0000724
725 .. method:: assertAlmostEqual(first, second[, places[, msg]])
726 failUnlessAlmostEqual(first, second[, places[, msg]])
727
728 Test that *first* and *second* are approximately equal by computing the
729 difference, rounding to the given number of decimal *places* (default 7),
730 and comparing to zero.
731
732 Note that comparing a given number of decimal places is not the same as
733 comparing a given number of significant digits. If the values do not
734 compare equal, the test will fail with the explanation given by *msg*, or
735 :const:`None`.
736
Michael Foordc3f79372009-09-13 16:40:02 +0000737 .. versionchanged:: 2.7
738 Objects that compare equal are automatically almost equal.
739
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000740 .. deprecated:: 2.7
Georg Brandl1c7c7302010-02-06 10:08:21 +0000741 :meth:`failUnlessAlmostEqual`; use :meth:`assertAlmostEqual`.
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000742
Benjamin Peterson99721e02009-03-23 23:10:14 +0000743
744 .. method:: assertNotAlmostEqual(first, second[, places[, msg]])
745 failIfAlmostEqual(first, second[, places[, msg]])
746
747 Test that *first* and *second* are not approximately equal by computing
748 the difference, rounding to the given number of decimal *places* (default
749 7), and comparing to zero.
750
751 Note that comparing a given number of decimal places is not the same as
752 comparing a given number of significant digits. If the values do not
753 compare equal, the test will fail with the explanation given by *msg*, or
754 :const:`None`.
755
Michael Foordc3f79372009-09-13 16:40:02 +0000756 .. versionchanged:: 2.7
757 Objects that compare equal automatically fail.
758
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000759 .. deprecated:: 2.7
Georg Brandl1c7c7302010-02-06 10:08:21 +0000760 :meth:`failIfAlmostEqual`; use :meth:`assertNotAlmostEqual`.
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000761
Benjamin Peterson99721e02009-03-23 23:10:14 +0000762
Gregory P. Smith28399852009-03-31 16:54:10 +0000763 .. method:: assertGreater(first, second, msg=None)
764 assertGreaterEqual(first, second, msg=None)
765 assertLess(first, second, msg=None)
766 assertLessEqual(first, second, msg=None)
767
768 Test that *first* is respectively >, >=, < or <= than *second* depending
Andrew M. Kuchling59631852009-04-09 11:23:36 +0000769 on the method name. If not, the test will fail with an explanation
Gregory P. Smith28399852009-03-31 16:54:10 +0000770 or with the explanation given by *msg*::
771
772 >>> self.assertGreaterEqual(3, 4)
773 AssertionError: "3" unexpectedly not greater than or equal to "4"
774
775 .. versionadded:: 2.7
776
777
778 .. method:: assertMultiLineEqual(self, first, second, msg=None)
779
780 Test that the multiline string *first* is equal to the string *second*.
781 When not equal a diff of the two strings highlighting the differences
Michael Foordfe6349c2010-02-08 22:41:16 +0000782 will be included in the error message. This method is used by default
783 when comparing Unicode strings with :meth:`assertEqual`.
Gregory P. Smith28399852009-03-31 16:54:10 +0000784
785 If specified *msg* will be used as the error message on failure.
786
787 .. versionadded:: 2.7
788
789
Ezio Melotti5afe42b2010-01-16 19:36:42 +0000790 .. method:: assertRegexpMatches(text, regexp, msg=None)
Gregory P. Smith28399852009-03-31 16:54:10 +0000791
792 Verifies that a *regexp* search matches *text*. Fails with an error
793 message including the pattern and the *text*. *regexp* may be
794 a regular expression object or a string containing a regular expression
795 suitable for use by :func:`re.search`.
796
797 .. versionadded:: 2.7
798
799
800 .. method:: assertIn(first, second, msg=None)
801 assertNotIn(first, second, msg=None)
802
Andrew M. Kuchling59631852009-04-09 11:23:36 +0000803 Tests that *first* is or is not in *second* with an explanatory error
Gregory P. Smith28399852009-03-31 16:54:10 +0000804 message as appropriate.
805
806 If specified *msg* will be used as the error message on failure.
807
808 .. versionadded:: 2.7
809
810
Michael Foord1c430012010-02-05 20:52:14 +0000811 .. method:: assertSameElements(actual, expected, msg=None)
Gregory P. Smith28399852009-03-31 16:54:10 +0000812
Michael Foorde70c72c2010-01-31 19:59:26 +0000813 Test that sequence *expected* contains the same elements as *actual*,
814 regardless of their order. When they don't, an error message listing
815 the differences between the sequences will be generated.
Gregory P. Smith28399852009-03-31 16:54:10 +0000816
Michael Foord1c430012010-02-05 20:52:14 +0000817 Duplicate elements are ignored when comparing *actual* and *expected*.
818 It is the equivalent of ``assertEqual(set(expected), set(actual))``
819 but it works with sequences of unhashable objects as well.
820
Gregory P. Smith28399852009-03-31 16:54:10 +0000821 If specified *msg* will be used as the error message on failure.
822
823 .. versionadded:: 2.7
824
825
826 .. method:: assertSetEqual(set1, set2, msg=None)
827
828 Tests that two sets are equal. If not, an error message is constructed
Michael Foordfe6349c2010-02-08 22:41:16 +0000829 that lists the differences between the sets. This method is used by
830 default when comparing sets or frozensets with :meth:`assertEqual`.
Gregory P. Smith28399852009-03-31 16:54:10 +0000831
832 Fails if either of *set1* or *set2* does not have a :meth:`set.difference`
833 method.
834
835 If specified *msg* will be used as the error message on failure.
836
837 .. versionadded:: 2.7
838
839
840 .. method:: assertDictEqual(expected, actual, msg=None)
841
842 Test that two dictionaries are equal. If not, an error message is
Michael Foordfe6349c2010-02-08 22:41:16 +0000843 constructed that shows the differences in the dictionaries. This
844 method will be used by default to compare dictionaries in
845 calls to :meth:`assertEqual`.
Gregory P. Smith28399852009-03-31 16:54:10 +0000846
847 If specified *msg* will be used as the error message on failure.
848
849 .. versionadded:: 2.7
850
851
852 .. method:: assertDictContainsSubset(expected, actual, msg=None)
853
Andrew M. Kuchling59631852009-04-09 11:23:36 +0000854 Tests whether the key/value pairs in dictionary *actual* are a
Gregory P. Smith28399852009-03-31 16:54:10 +0000855 superset of those in *expected*. If not, an error message listing
856 the missing keys and mismatched values is generated.
857
858 If specified *msg* will be used as the error message on failure.
859
860 .. versionadded:: 2.7
861
862
863 .. method:: assertListEqual(list1, list2, msg=None)
864 assertTupleEqual(tuple1, tuple2, msg=None)
865
866 Tests that two lists or tuples are equal. If not an error message is
867 constructed that shows only the differences between the two. An error
868 is also raised if either of the parameters are of the wrong type.
Michael Foordfe6349c2010-02-08 22:41:16 +0000869 These methods are used by default when comparing lists or tuples with
870 :meth:`assertEqual`.
Gregory P. Smith28399852009-03-31 16:54:10 +0000871
872 If specified *msg* will be used as the error message on failure.
873
874 .. versionadded:: 2.7
875
876
877 .. method:: assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)
878
879 Tests that two sequences are equal. If a *seq_type* is supplied, both
880 *seq1* and *seq2* must be instances of *seq_type* or a failure will
881 be raised. If the sequences are different an error message is
882 constructed that shows the difference between the two.
883
884 If specified *msg* will be used as the error message on failure.
885
886 This method is used to implement :meth:`assertListEqual` and
887 :meth:`assertTupleEqual`.
888
889 .. versionadded:: 2.7
890
891
Benjamin Peterson99721e02009-03-23 23:10:14 +0000892 .. method:: assertRaises(exception[, callable, ...])
893 failUnlessRaises(exception[, callable, ...])
894
895 Test that an exception is raised when *callable* is called with any
896 positional or keyword arguments that are also passed to
897 :meth:`assertRaises`. The test passes if *exception* is raised, is an
898 error if another exception is raised, or fails if no exception is raised.
899 To catch any of a group of exceptions, a tuple containing the exception
900 classes may be passed as *exception*.
901
Benjamin Peterson7233acc2009-03-29 03:31:40 +0000902 If *callable* is omitted or None, returns a context manager so that the
903 code under test can be written inline rather than as a function::
904
Michael Foord1f3fa8a2010-02-05 21:07:38 +0000905 with self.assertRaises(SomeException):
Benjamin Peterson7233acc2009-03-29 03:31:40 +0000906 do_something()
907
Kristján Valur Jónssone2a77982009-08-27 22:20:21 +0000908 The context manager will store the caught exception object in its
Georg Brandldc3694b2010-02-07 17:02:22 +0000909 :attr:`exception` attribute. This can be useful if the intention
Michael Foord1f3fa8a2010-02-05 21:07:38 +0000910 is to perform additional checks on the exception raised::
911
912 with self.assertRaises(SomeException) as cm:
913 do_something()
914
Georg Brandldc3694b2010-02-07 17:02:22 +0000915 the_exception = cm.exception
Michael Foordba7732e2010-02-05 23:28:12 +0000916 self.assertEqual(the_exception.error_code, 3)
Kristján Valur Jónssone2a77982009-08-27 22:20:21 +0000917
Benjamin Peterson99721e02009-03-23 23:10:14 +0000918 .. versionchanged:: 2.7
Benjamin Peterson7233acc2009-03-29 03:31:40 +0000919 Added the ability to use :meth:`assertRaises` as a context manager.
Benjamin Peterson99721e02009-03-23 23:10:14 +0000920
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000921 .. deprecated:: 2.7
Georg Brandl1c7c7302010-02-06 10:08:21 +0000922 :meth:`failUnlessRaises`; use :meth:`assertRaises`.
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000923
Benjamin Peterson99721e02009-03-23 23:10:14 +0000924
Gregory P. Smith28399852009-03-31 16:54:10 +0000925 .. method:: assertRaisesRegexp(exception, regexp[, callable, ...])
Benjamin Peterson99721e02009-03-23 23:10:14 +0000926
Gregory P. Smith28399852009-03-31 16:54:10 +0000927 Like :meth:`assertRaises` but also tests that *regexp* matches
928 on the string representation of the raised exception. *regexp* may be
929 a regular expression object or a string containing a regular expression
930 suitable for use by :func:`re.search`. Examples::
931
932 self.assertRaisesRegexp(ValueError, 'invalid literal for.*XYZ$',
933 int, 'XYZ')
934
935 or::
936
937 with self.assertRaisesRegexp(ValueError, 'literal'):
938 int('XYZ')
939
940 .. versionadded:: 2.7
941
942
943 .. method:: assertIsNone(expr[, msg])
944
945 This signals a test failure if *expr* is not None.
946
947 .. versionadded:: 2.7
948
949
950 .. method:: assertIsNotNone(expr[, msg])
951
952 The inverse of the :meth:`assertIsNone` method.
953 This signals a test failure if *expr* is None.
954
955 .. versionadded:: 2.7
956
957
Michael Foordf2dfef12009-04-05 19:19:28 +0000958 .. method:: assertIs(expr1, expr2[, msg])
959
960 This signals a test failure if *expr1* and *expr2* don't evaluate to the same
961 object.
962
963 .. versionadded:: 2.7
964
965
966 .. method:: assertIsNot(expr1, expr2[, msg])
967
968 The inverse of the :meth:`assertIs` method.
969 This signals a test failure if *expr1* and *expr2* evaluate to the same
970 object.
971
972 .. versionadded:: 2.7
973
974
Georg Brandlf895cf52009-10-01 20:59:31 +0000975 .. method:: assertIsInstance(obj, cls[, msg])
976
977 This signals a test failure if *obj* is not an instance of *cls* (which
978 can be a class or a tuple of classes, as supported by :func:`isinstance`).
979
980 .. versionadded:: 2.7
981
982
983 .. method:: assertNotIsInstance(obj, cls[, msg])
984
985 The inverse of the :meth:`assertIsInstance` method. This signals a test
986 failure if *obj* is an instance of *cls*.
987
988 .. versionadded:: 2.7
989
990
Gregory P. Smith28399852009-03-31 16:54:10 +0000991 .. method:: assertFalse(expr[, msg])
992 failIf(expr[, msg])
993
994 The inverse of the :meth:`assertTrue` method is the :meth:`assertFalse` method.
Benjamin Peterson99721e02009-03-23 23:10:14 +0000995 This signals a test failure if *expr* is true, with *msg* or :const:`None`
996 for the error message.
997
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000998 .. deprecated:: 2.7
Georg Brandl1c7c7302010-02-06 10:08:21 +0000999 :meth:`failIf`; use :meth:`assertFalse`.
Gregory P. Smith65ff0052009-03-31 19:59:14 +00001000
Benjamin Peterson99721e02009-03-23 23:10:14 +00001001
1002 .. method:: fail([msg])
1003
1004 Signals a test failure unconditionally, with *msg* or :const:`None` for
1005 the error message.
1006
1007
1008 .. attribute:: failureException
1009
1010 This class attribute gives the exception raised by the test method. If a
1011 test framework needs to use a specialized exception, possibly to carry
1012 additional information, it must subclass this exception in order to "play
1013 fair" with the framework. The initial value of this attribute is
1014 :exc:`AssertionError`.
1015
Michael Foord345b2fe2009-04-02 03:20:38 +00001016
1017 .. attribute:: longMessage
1018
1019 If set to True then any explicit failure message you pass in to the
1020 assert methods will be appended to the end of the normal failure message.
1021 The normal messages contain useful information about the objects involved,
1022 for example the message from assertEqual shows you the repr of the two
1023 unequal objects. Setting this attribute to True allows you to have a
1024 custom error message in addition to the normal one.
1025
1026 This attribute defaults to False, meaning that a custom message passed
1027 to an assert method will silence the normal message.
1028
1029 The class setting can be overridden in individual tests by assigning an
1030 instance attribute to True or False before calling the assert methods.
1031
1032 .. versionadded:: 2.7
1033
1034
Benjamin Peterson99721e02009-03-23 23:10:14 +00001035 Testing frameworks can use the following methods to collect information on
1036 the test:
1037
1038
1039 .. method:: countTestCases()
1040
1041 Return the number of tests represented by this test object. For
1042 :class:`TestCase` instances, this will always be ``1``.
1043
1044
1045 .. method:: defaultTestResult()
1046
1047 Return an instance of the test result class that should be used for this
1048 test case class (if no other result instance is provided to the
1049 :meth:`run` method).
1050
1051 For :class:`TestCase` instances, this will always be an instance of
1052 :class:`TestResult`; subclasses of :class:`TestCase` should override this
1053 as necessary.
1054
1055
1056 .. method:: id()
1057
1058 Return a string identifying the specific test case. This is usually the
1059 full name of the test method, including the module and class name.
1060
1061
1062 .. method:: shortDescription()
1063
Gregory P. Smith28399852009-03-31 16:54:10 +00001064 Returns a description of the test, or :const:`None` if no description
1065 has been provided. The default implementation of this method
1066 returns the first line of the test method's docstring, if available,
Michael Foorddb43b5a2010-02-10 14:25:12 +00001067 or :const:`None`.
Gregory P. Smith28399852009-03-31 16:54:10 +00001068
1069
1070 .. method:: addTypeEqualityFunc(typeobj, function)
1071
1072 Registers a type specific :meth:`assertEqual` equality checking
1073 function to be called by :meth:`assertEqual` when both objects it has
1074 been asked to compare are exactly *typeobj* (not subclasses).
1075 *function* must take two positional arguments and a third msg=None
1076 keyword argument just as :meth:`assertEqual` does. It must raise
Andrew M. Kuchling59631852009-04-09 11:23:36 +00001077 ``self.failureException`` when inequality between the first two
Gregory P. Smith28399852009-03-31 16:54:10 +00001078 parameters is detected.
1079
1080 One good use of custom equality checking functions for a type
Andrew M. Kuchling59631852009-04-09 11:23:36 +00001081 is to raise ``self.failureException`` with an error message useful
1082 for debugging the problem by explaining the inequalities in detail.
Gregory P. Smith28399852009-03-31 16:54:10 +00001083
1084 .. versionadded:: 2.7
Georg Brandl8ec7f652007-08-15 14:28:01 +00001085
1086
Michael Foorde2fb98f2009-05-02 20:15:05 +00001087 .. method:: addCleanup(function[, *args[, **kwargs]])
1088
1089 Add a function to be called after :meth:`tearDown` to cleanup resources
1090 used during the test. Functions will be called in reverse order to the
1091 order they are added (LIFO). They are called with any arguments and
1092 keyword arguments passed into :meth:`addCleanup` when they are
1093 added.
1094
1095 If :meth:`setUp` fails, meaning that :meth:`tearDown` is not called,
1096 then any cleanup functions added will still be called.
1097
1098 .. versionadded:: 2.7
1099
1100
1101 .. method:: doCleanups()
1102
1103 This method is called uncoditionally after :meth:`tearDown`, or
1104 after :meth:`setUp` if :meth:`setUp` raises an exception.
1105
1106 It is responsible for calling all the cleanup functions added by
1107 :meth:`addCleanup`. If you need cleanup functions to be called
1108 *prior* to :meth:`tearDown` then you can call :meth:`doCleanups`
1109 yourself.
1110
1111 :meth:`doCleanups` pops methods off the stack of cleanup
1112 functions one at a time, so it can be called at any time.
1113
1114 .. versionadded:: 2.7
1115
1116
Georg Brandl8ec7f652007-08-15 14:28:01 +00001117.. class:: FunctionTestCase(testFunc[, setUp[, tearDown[, description]]])
1118
1119 This class implements the portion of the :class:`TestCase` interface which
Georg Brandl2fcd1732009-05-30 10:45:40 +00001120 allows the test runner to drive the test, but does not provide the methods
1121 which test code can use to check and report errors. This is used to create
1122 test cases using legacy test code, allowing it to be integrated into a
1123 :mod:`unittest`-based test framework.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001124
1125
Benjamin Peterson99721e02009-03-23 23:10:14 +00001126.. _testsuite-objects:
1127
1128Grouping tests
1129~~~~~~~~~~~~~~
1130
Georg Brandl8ec7f652007-08-15 14:28:01 +00001131.. class:: TestSuite([tests])
1132
1133 This class represents an aggregation of individual tests cases and test suites.
1134 The class presents the interface needed by the test runner to allow it to be run
1135 as any other test case. Running a :class:`TestSuite` instance is the same as
1136 iterating over the suite, running each test individually.
1137
1138 If *tests* is given, it must be an iterable of individual test cases or other
1139 test suites that will be used to build the suite initially. Additional methods
1140 are provided to add test cases and suites to the collection later on.
1141
Benjamin Peterson176a56c2009-05-25 00:48:58 +00001142 :class:`TestSuite` objects behave much like :class:`TestCase` objects, except
1143 they do not actually implement a test. Instead, they are used to aggregate
1144 tests into groups of tests that should be run together. Some additional
1145 methods are available to add tests to :class:`TestSuite` instances:
Benjamin Peterson99721e02009-03-23 23:10:14 +00001146
1147
1148 .. method:: TestSuite.addTest(test)
1149
1150 Add a :class:`TestCase` or :class:`TestSuite` to the suite.
1151
1152
1153 .. method:: TestSuite.addTests(tests)
1154
1155 Add all the tests from an iterable of :class:`TestCase` and :class:`TestSuite`
1156 instances to this test suite.
1157
Georg Brandl2fcd1732009-05-30 10:45:40 +00001158 This is equivalent to iterating over *tests*, calling :meth:`addTest` for
1159 each element.
Benjamin Peterson99721e02009-03-23 23:10:14 +00001160
1161 :class:`TestSuite` shares the following methods with :class:`TestCase`:
1162
1163
1164 .. method:: run(result)
1165
1166 Run the tests associated with this suite, collecting the result into the
1167 test result object passed as *result*. Note that unlike
1168 :meth:`TestCase.run`, :meth:`TestSuite.run` requires the result object to
1169 be passed in.
1170
1171
1172 .. method:: debug()
1173
1174 Run the tests associated with this suite without collecting the
1175 result. This allows exceptions raised by the test to be propagated to the
1176 caller and can be used to support running tests under a debugger.
1177
1178
1179 .. method:: countTestCases()
1180
1181 Return the number of tests represented by this test object, including all
1182 individual tests and sub-suites.
1183
Georg Brandl9bc66822009-04-27 17:04:23 +00001184
1185 .. method:: __iter__()
1186
1187 Tests grouped by a :class:`TestSuite` are always accessed by iteration.
1188 Subclasses can lazily provide tests by overriding :meth:`__iter__`. Note
1189 that this method maybe called several times on a single suite
1190 (for example when counting tests or comparing for equality)
1191 so the tests returned must be the same for repeated iterations.
1192
1193 .. versionchanged:: 2.7
1194 In earlier versions the :class:`TestSuite` accessed tests directly rather
1195 than through iteration, so overriding :meth:`__iter__` wasn't sufficient
1196 for providing tests.
1197
Benjamin Peterson99721e02009-03-23 23:10:14 +00001198 In the typical usage of a :class:`TestSuite` object, the :meth:`run` method
1199 is invoked by a :class:`TestRunner` rather than by the end-user test harness.
1200
1201
Benjamin Peterson99721e02009-03-23 23:10:14 +00001202Loading and running tests
1203~~~~~~~~~~~~~~~~~~~~~~~~~
1204
Georg Brandl8ec7f652007-08-15 14:28:01 +00001205.. class:: TestLoader()
1206
Benjamin Peterson99721e02009-03-23 23:10:14 +00001207 The :class:`TestLoader` class is used to create test suites from classes and
1208 modules. Normally, there is no need to create an instance of this class; the
1209 :mod:`unittest` module provides an instance that can be shared as
1210 ``unittest.defaultTestLoader``. Using a subclass or instance, however, allows
1211 customization of some configurable properties.
1212
1213 :class:`TestLoader` objects have the following methods:
Georg Brandl8ec7f652007-08-15 14:28:01 +00001214
1215
Benjamin Peterson99721e02009-03-23 23:10:14 +00001216 .. method:: loadTestsFromTestCase(testCaseClass)
Georg Brandl8ec7f652007-08-15 14:28:01 +00001217
Benjamin Peterson99721e02009-03-23 23:10:14 +00001218 Return a suite of all tests cases contained in the :class:`TestCase`\ -derived
1219 :class:`testCaseClass`.
1220
1221
1222 .. method:: loadTestsFromModule(module)
1223
1224 Return a suite of all tests cases contained in the given module. This
1225 method searches *module* for classes derived from :class:`TestCase` and
1226 creates an instance of the class for each test method defined for the
1227 class.
1228
Georg Brandl16a57f62009-04-27 15:29:09 +00001229 .. note::
Benjamin Peterson99721e02009-03-23 23:10:14 +00001230
1231 While using a hierarchy of :class:`TestCase`\ -derived classes can be
1232 convenient in sharing fixtures and helper functions, defining test
1233 methods on base classes that are not intended to be instantiated
1234 directly does not play well with this method. Doing so, however, can
1235 be useful when the fixtures are different and defined in subclasses.
1236
Michael Foordb4a81c82009-05-29 20:33:46 +00001237 If a module provides a ``load_tests`` function it will be called to
1238 load the tests. This allows modules to customize test loading.
1239 This is the `load_tests protocol`_.
1240
1241 .. versionchanged:: 2.7
1242 Support for ``load_tests`` added.
1243
Benjamin Peterson99721e02009-03-23 23:10:14 +00001244
1245 .. method:: loadTestsFromName(name[, module])
1246
1247 Return a suite of all tests cases given a string specifier.
1248
1249 The specifier *name* is a "dotted name" that may resolve either to a
1250 module, a test case class, a test method within a test case class, a
1251 :class:`TestSuite` instance, or a callable object which returns a
1252 :class:`TestCase` or :class:`TestSuite` instance. These checks are
1253 applied in the order listed here; that is, a method on a possible test
1254 case class will be picked up as "a test method within a test case class",
1255 rather than "a callable object".
1256
1257 For example, if you have a module :mod:`SampleTests` containing a
Georg Brandl2fcd1732009-05-30 10:45:40 +00001258 :class:`TestCase`\ -derived class :class:`SampleTestCase` with three test
1259 methods (:meth:`test_one`, :meth:`test_two`, and :meth:`test_three`), the
1260 specifier ``'SampleTests.SampleTestCase'`` would cause this method to
1261 return a suite which will run all three test methods. Using the specifier
1262 ``'SampleTests.SampleTestCase.test_two'`` would cause it to return a test
1263 suite which will run only the :meth:`test_two` test method. The specifier
1264 can refer to modules and packages which have not been imported; they will
1265 be imported as a side-effect.
Benjamin Peterson99721e02009-03-23 23:10:14 +00001266
1267 The method optionally resolves *name* relative to the given *module*.
1268
1269
1270 .. method:: loadTestsFromNames(names[, module])
1271
1272 Similar to :meth:`loadTestsFromName`, but takes a sequence of names rather
1273 than a single name. The return value is a test suite which supports all
1274 the tests defined for each name.
1275
1276
1277 .. method:: getTestCaseNames(testCaseClass)
1278
1279 Return a sorted sequence of method names found within *testCaseClass*;
1280 this should be a subclass of :class:`TestCase`.
1281
Michael Foordb4a81c82009-05-29 20:33:46 +00001282
1283 .. method:: discover(start_dir, pattern='test*.py', top_level_dir=None)
1284
1285 Find and return all test modules from the specified start directory,
1286 recursing into subdirectories to find them. Only test files that match
Michael Foorde91ea562009-09-13 19:07:03 +00001287 *pattern* will be loaded. (Using shell style pattern matching.) Only
1288 module names that are importable (i.e. are valid Python identifiers) will
1289 be loaded.
Michael Foordb4a81c82009-05-29 20:33:46 +00001290
1291 All test modules must be importable from the top level of the project. If
1292 the start directory is not the top level directory then the top level
1293 directory must be specified separately.
1294
Michael Foorde91ea562009-09-13 19:07:03 +00001295 If importing a module fails, for example due to a syntax error, then this
1296 will be recorded as a single error and discovery will continue.
1297
Michael Foordb4a81c82009-05-29 20:33:46 +00001298 If a test package name (directory with :file:`__init__.py`) matches the
1299 pattern then the package will be checked for a ``load_tests``
1300 function. If this exists then it will be called with *loader*, *tests*,
1301 *pattern*.
1302
Michael Foorddc0460a2009-09-13 19:08:18 +00001303 If load_tests exists then discovery does *not* recurse into the package,
Michael Foordb4a81c82009-05-29 20:33:46 +00001304 ``load_tests`` is responsible for loading all tests in the package.
1305
1306 The pattern is deliberately not stored as a loader attribute so that
1307 packages can continue discovery themselves. *top_level_dir* is stored so
1308 ``load_tests`` does not need to pass this argument in to
1309 ``loader.discover()``.
1310
Michael Foord17565e52009-09-27 20:08:23 +00001311 .. versionadded:: 2.7
Michael Foordb4a81c82009-05-29 20:33:46 +00001312
Benjamin Peterson99721e02009-03-23 23:10:14 +00001313 The following attributes of a :class:`TestLoader` can be configured either by
1314 subclassing or assignment on an instance:
1315
1316
1317 .. attribute:: testMethodPrefix
1318
1319 String giving the prefix of method names which will be interpreted as test
1320 methods. The default value is ``'test'``.
1321
1322 This affects :meth:`getTestCaseNames` and all the :meth:`loadTestsFrom\*`
1323 methods.
1324
1325
1326 .. attribute:: sortTestMethodsUsing
1327
1328 Function to be used to compare method names when sorting them in
1329 :meth:`getTestCaseNames` and all the :meth:`loadTestsFrom\*` methods. The
1330 default value is the built-in :func:`cmp` function; the attribute can also
1331 be set to :const:`None` to disable the sort.
1332
1333
1334 .. attribute:: suiteClass
1335
1336 Callable object that constructs a test suite from a list of tests. No
1337 methods on the resulting object are needed. The default value is the
1338 :class:`TestSuite` class.
1339
1340 This affects all the :meth:`loadTestsFrom\*` methods.
1341
1342
Benjamin Peterson99721e02009-03-23 23:10:14 +00001343.. class:: TestResult
1344
1345 This class is used to compile information about which tests have succeeded
1346 and which have failed.
1347
1348 A :class:`TestResult` object stores the results of a set of tests. The
1349 :class:`TestCase` and :class:`TestSuite` classes ensure that results are
1350 properly recorded; test authors do not need to worry about recording the
1351 outcome of tests.
1352
1353 Testing frameworks built on top of :mod:`unittest` may want access to the
1354 :class:`TestResult` object generated by running a set of tests for reporting
1355 purposes; a :class:`TestResult` instance is returned by the
1356 :meth:`TestRunner.run` method for this purpose.
1357
1358 :class:`TestResult` instances have the following attributes that will be of
1359 interest when inspecting the results of running a set of tests:
1360
1361
1362 .. attribute:: errors
1363
1364 A list containing 2-tuples of :class:`TestCase` instances and strings
1365 holding formatted tracebacks. Each tuple represents a test which raised an
1366 unexpected exception.
1367
1368 .. versionchanged:: 2.2
Benjamin Peterson99721e02009-03-23 23:10:14 +00001369 Contains formatted tracebacks instead of :func:`sys.exc_info` results.
1370
1371
1372 .. attribute:: failures
1373
1374 A list containing 2-tuples of :class:`TestCase` instances and strings
1375 holding formatted tracebacks. Each tuple represents a test where a failure
1376 was explicitly signalled using the :meth:`TestCase.fail\*` or
1377 :meth:`TestCase.assert\*` methods.
1378
1379 .. versionchanged:: 2.2
Benjamin Peterson99721e02009-03-23 23:10:14 +00001380 Contains formatted tracebacks instead of :func:`sys.exc_info` results.
1381
1382 .. attribute:: skipped
1383
1384 A list containing 2-tuples of :class:`TestCase` instances and strings
1385 holding the reason for skipping the test.
1386
1387 .. versionadded:: 2.7
1388
1389 .. attribute:: expectedFailures
1390
1391 A list contaning 2-tuples of :class:`TestCase` instances and strings
1392 holding formatted tracebacks. Each tuple represents a expected failures
1393 of the test case.
1394
1395 .. attribute:: unexpectedSuccesses
1396
1397 A list containing :class:`TestCase` instances that were marked as expected
1398 failures, but succeeded.
1399
1400 .. attribute:: shouldStop
1401
1402 Set to ``True`` when the execution of tests should stop by :meth:`stop`.
1403
1404
1405 .. attribute:: testsRun
1406
1407 The total number of tests run so far.
1408
1409
1410 .. method:: wasSuccessful()
1411
1412 Return :const:`True` if all tests run so far have passed, otherwise returns
1413 :const:`False`.
1414
1415
1416 .. method:: stop()
1417
1418 This method can be called to signal that the set of tests being run should
1419 be aborted by setting the :attr:`shouldStop` attribute to :const:`True`.
1420 :class:`TestRunner` objects should respect this flag and return without
1421 running any additional tests.
1422
1423 For example, this feature is used by the :class:`TextTestRunner` class to
1424 stop the test framework when the user signals an interrupt from the
1425 keyboard. Interactive tools which provide :class:`TestRunner`
1426 implementations can use this in a similar manner.
1427
1428 The following methods of the :class:`TestResult` class are used to maintain
1429 the internal data structures, and may be extended in subclasses to support
1430 additional reporting requirements. This is particularly useful in building
1431 tools which support interactive reporting while tests are being run.
1432
1433
1434 .. method:: startTest(test)
1435
1436 Called when the test case *test* is about to be run.
1437
1438 The default implementation simply increments the instance's :attr:`testsRun`
1439 counter.
1440
1441
1442 .. method:: stopTest(test)
1443
1444 Called after the test case *test* has been executed, regardless of the
1445 outcome.
1446
1447 The default implementation does nothing.
1448
1449
Michael Foord07ef4872009-05-02 22:43:34 +00001450 .. method:: startTestRun(test)
1451
1452 Called once before any tests are executed.
1453
1454 .. versionadded:: 2.7
1455
1456
1457 .. method:: stopTestRun(test)
1458
Ezio Melotti7b4e02c2010-01-27 20:25:11 +00001459 Called once after all tests are executed.
Michael Foord07ef4872009-05-02 22:43:34 +00001460
1461 .. versionadded:: 2.7
1462
1463
Benjamin Peterson99721e02009-03-23 23:10:14 +00001464 .. method:: addError(test, err)
1465
1466 Called when the test case *test* raises an unexpected exception *err* is a
1467 tuple of the form returned by :func:`sys.exc_info`: ``(type, value,
1468 traceback)``.
1469
1470 The default implementation appends a tuple ``(test, formatted_err)`` to
1471 the instance's :attr:`errors` attribute, where *formatted_err* is a
1472 formatted traceback derived from *err*.
1473
1474
1475 .. method:: addFailure(test, err)
1476
Michael Foordb4a81c82009-05-29 20:33:46 +00001477 Called when the test case *test* signals a failure. *err* is a tuple of
1478 the form returned by :func:`sys.exc_info`: ``(type, value, traceback)``.
Benjamin Peterson99721e02009-03-23 23:10:14 +00001479
1480 The default implementation appends a tuple ``(test, formatted_err)`` to
1481 the instance's :attr:`failures` attribute, where *formatted_err* is a
1482 formatted traceback derived from *err*.
1483
1484
1485 .. method:: addSuccess(test)
1486
1487 Called when the test case *test* succeeds.
1488
1489 The default implementation does nothing.
1490
1491
1492 .. method:: addSkip(test, reason)
1493
1494 Called when the test case *test* is skipped. *reason* is the reason the
1495 test gave for skipping.
1496
1497 The default implementation appends a tuple ``(test, reason)`` to the
1498 instance's :attr:`skipped` attribute.
1499
1500
1501 .. method:: addExpectedFailure(test, err)
1502
1503 Called when the test case *test* fails, but was marked with the
1504 :func:`expectedFailure` decorator.
1505
1506 The default implementation appends a tuple ``(test, formatted_err)`` to
1507 the instance's :attr:`expectedFailures` attribute, where *formatted_err*
1508 is a formatted traceback derived from *err*.
1509
1510
1511 .. method:: addUnexpectedSuccess(test)
1512
1513 Called when the test case *test* was marked with the
1514 :func:`expectedFailure` decorator, but succeeded.
1515
1516 The default implementation appends the test to the instance's
1517 :attr:`unexpectedSuccesses` attribute.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001518
Michael Foorddb43b5a2010-02-10 14:25:12 +00001519.. class:: TextTestResult(stream, descriptions, verbosity)
1520
1521 A concrete implementation of :class:`TestResult` used by the
1522 :class:`TextTestRunner`.
1523
1524 .. versionadded:: 2.7
1525 This class was previously named ``_TextTestResult``. The old name still
1526 exists as an alias but is deprecated.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001527
1528.. data:: defaultTestLoader
1529
1530 Instance of the :class:`TestLoader` class intended to be shared. If no
1531 customization of the :class:`TestLoader` is needed, this instance can be used
1532 instead of repeatedly creating new instances.
1533
1534
Michael Foorddb43b5a2010-02-10 14:25:12 +00001535.. class:: TextTestRunner([stream[, descriptions[, verbosity], [resultclass]]])
Georg Brandl8ec7f652007-08-15 14:28:01 +00001536
1537 A basic test runner implementation which prints results on standard error. It
1538 has a few configurable parameters, but is essentially very simple. Graphical
1539 applications which run test suites should provide alternate implementations.
1540
Georg Brandl9bc66822009-04-27 17:04:23 +00001541 .. method:: _makeResult()
1542
1543 This method returns the instance of ``TestResult`` used by :meth:`run`.
1544 It is not intended to be called directly, but can be overridden in
1545 subclasses to provide a custom ``TestResult``.
1546
Michael Foorddb43b5a2010-02-10 14:25:12 +00001547 ``_makeResult()`` instantiates the class or callable passed in the
1548 ``TextTestRunner`` constructor as the ``resultclass`` argument. It
1549 defaults to :class::`TextTestResult` if no ``resultclass`` is provided.
1550 The result class is instantiated with the following arguments::
1551
1552 stream, descriptions, verbosity
1553
Georg Brandl8ec7f652007-08-15 14:28:01 +00001554
Michael Foord5d31e052009-05-11 17:59:43 +00001555.. function:: main([module[, defaultTest[, argv[, testRunner[, testLoader[, exit, [verbosity]]]]]]])
Georg Brandl8ec7f652007-08-15 14:28:01 +00001556
1557 A command-line program that runs a set of tests; this is primarily for making
1558 test modules conveniently executable. The simplest use for this function is to
1559 include the following line at the end of a test script::
1560
1561 if __name__ == '__main__':
1562 unittest.main()
1563
Michael Foord5d31e052009-05-11 17:59:43 +00001564 You can run tests with more detailed information by passing in the verbosity
1565 argument::
1566
1567 if __name__ == '__main__':
1568 unittest.main(verbosity=2)
1569
Georg Brandl8ec7f652007-08-15 14:28:01 +00001570 The *testRunner* argument can either be a test runner class or an already
Michael Foord829f6b82009-05-02 11:43:06 +00001571 created instance of it. By default ``main`` calls :func:`sys.exit` with
1572 an exit code indicating success or failure of the tests run.
1573
1574 ``main`` supports being used from the interactive interpreter by passing in the
1575 argument ``exit=False``. This displays the result on standard output without
1576 calling :func:`sys.exit`::
1577
1578 >>> from unittest import main
1579 >>> main(module='test_module', exit=False)
1580
1581 Calling ``main`` actually returns an instance of the ``TestProgram`` class.
1582 This stores the result of the tests run as the ``result`` attribute.
1583
1584 .. versionchanged:: 2.7
Michael Foord5d31e052009-05-11 17:59:43 +00001585 The ``exit`` and ``verbosity`` parameters were added.
Michael Foordb4a81c82009-05-29 20:33:46 +00001586
1587
1588load_tests Protocol
1589###################
1590
Michael Foord17565e52009-09-27 20:08:23 +00001591
1592.. versionadded:: 2.7
1593
1594
Michael Foordb4a81c82009-05-29 20:33:46 +00001595Modules or packages can customize how tests are loaded from them during normal
1596test runs or test discovery by implementing a function called ``load_tests``.
1597
1598If a test module defines ``load_tests`` it will be called by
1599:meth:`TestLoader.loadTestsFromModule` with the following arguments::
1600
1601 load_tests(loader, standard_tests, None)
1602
1603It should return a :class:`TestSuite`.
1604
1605*loader* is the instance of :class:`TestLoader` doing the loading.
1606*standard_tests* are the tests that would be loaded by default from the
1607module. It is common for test modules to only want to add or remove tests
1608from the standard set of tests.
1609The third argument is used when loading packages as part of test discovery.
1610
1611A typical ``load_tests`` function that loads tests from a specific set of
1612:class:`TestCase` classes may look like::
1613
1614 test_cases = (TestCase1, TestCase2, TestCase3)
1615
1616 def load_tests(loader, tests, pattern):
1617 suite = TestSuite()
1618 for test_class in test_cases:
1619 tests = loader.loadTestsFromTestCase(test_class)
1620 suite.addTests(tests)
1621 return suite
1622
1623If discovery is started, either from the command line or by calling
1624:meth:`TestLoader.discover`, with a pattern that matches a package
1625name then the package :file:`__init__.py` will be checked for ``load_tests``.
1626
1627.. note::
1628
Ezio Melotti062d2b52009-12-19 22:41:49 +00001629 The default pattern is 'test*.py'. This matches all Python files
Michael Foordb4a81c82009-05-29 20:33:46 +00001630 that start with 'test' but *won't* match any test directories.
1631
1632 A pattern like 'test*' will match test packages as well as
1633 modules.
1634
1635If the package :file:`__init__.py` defines ``load_tests`` then it will be
1636called and discovery not continued into the package. ``load_tests``
1637is called with the following arguments::
1638
1639 load_tests(loader, standard_tests, pattern)
1640
1641This should return a :class:`TestSuite` representing all the tests
1642from the package. (``standard_tests`` will only contain tests
1643collected from :file:`__init__.py`.)
1644
1645Because the pattern is passed into ``load_tests`` the package is free to
1646continue (and potentially modify) test discovery. A 'do nothing'
1647``load_tests`` function for a test package would look like::
1648
1649 def load_tests(loader, standard_tests, pattern):
1650 # top level directory cached on loader instance
1651 this_dir = os.path.dirname(__file__)
1652 package_tests = loader.discover(start_dir=this_dir, pattern=pattern)
1653 standard_tests.addTests(package_tests)
1654 return standard_tests