blob: 38e4239a2c360f432f01ee9da7ac9429595bf542 [file] [log] [blame]
Georg Brandl8ec7f652007-08-15 14:28:01 +00001:mod:`unittest` --- Unit testing framework
2==========================================
3
4.. module:: unittest
5 :synopsis: Unit testing framework for Python.
6.. moduleauthor:: Steve Purcell <stephen_purcell@yahoo.com>
7.. sectionauthor:: Steve Purcell <stephen_purcell@yahoo.com>
8.. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org>
9.. sectionauthor:: Raymond Hettinger <python@rcn.com>
10
11
12.. versionadded:: 2.1
Benjamin Peterson692428e2009-03-23 21:50:21 +000013
Benjamin Peterson99721e02009-03-23 23:10:14 +000014.. versionchanged:: 2.7
15 Added test :ref:`skipping and expected failures <unittest-skipping>`.
Georg Brandl8ec7f652007-08-15 14:28:01 +000016
17The Python unit testing framework, sometimes referred to as "PyUnit," is a
18Python language version of JUnit, by Kent Beck and Erich Gamma. JUnit is, in
19turn, a Java version of Kent's Smalltalk testing framework. Each is the de
20facto standard unit testing framework for its respective language.
21
22:mod:`unittest` supports test automation, sharing of setup and shutdown code for
23tests, aggregation of tests into collections, and independence of the tests from
24the reporting framework. The :mod:`unittest` module provides classes that make
25it easy to support these qualities for a set of tests.
26
27To achieve this, :mod:`unittest` supports some important concepts:
28
29test fixture
30 A :dfn:`test fixture` represents the preparation needed to perform one or more
31 tests, and any associate cleanup actions. This may involve, for example,
32 creating temporary or proxy databases, directories, or starting a server
33 process.
34
35test case
36 A :dfn:`test case` is the smallest unit of testing. It checks for a specific
37 response to a particular set of inputs. :mod:`unittest` provides a base class,
38 :class:`TestCase`, which may be used to create new test cases.
39
40test suite
41 A :dfn:`test suite` is a collection of test cases, test suites, or both. It is
42 used to aggregate tests that should be executed together.
43
44test runner
45 A :dfn:`test runner` is a component which orchestrates the execution of tests
46 and provides the outcome to the user. The runner may use a graphical interface,
47 a textual interface, or return a special value to indicate the results of
48 executing the tests.
49
50The test case and test fixture concepts are supported through the
51:class:`TestCase` and :class:`FunctionTestCase` classes; the former should be
52used when creating new tests, and the latter can be used when integrating
53existing test code with a :mod:`unittest`\ -driven framework. When building test
Benjamin Peterson99721e02009-03-23 23:10:14 +000054fixtures using :class:`TestCase`, the :meth:`~TestCase.setUp` and
55:meth:`~TestCase.tearDown` methods can be overridden to provide initialization
56and cleanup for the fixture. With :class:`FunctionTestCase`, existing functions
57can be passed to the constructor for these purposes. When the test is run, the
58fixture initialization is run first; if it succeeds, the cleanup method is run
59after the test has been executed, regardless of the outcome of the test. Each
60instance of the :class:`TestCase` will only be used to run a single test method,
61so a new fixture is created for each test.
Georg Brandl8ec7f652007-08-15 14:28:01 +000062
63Test suites are implemented by the :class:`TestSuite` class. This class allows
64individual tests and test suites to be aggregated; when the suite is executed,
Benjamin Peterson692428e2009-03-23 21:50:21 +000065all tests added directly to the suite and in "child" test suites are run. A
66:class:`ClassTestSuite` contains the test cases of a class.
Georg Brandl8ec7f652007-08-15 14:28:01 +000067
Benjamin Peterson99721e02009-03-23 23:10:14 +000068A test runner is an object that provides a single method,
69:meth:`~TestRunner.run`, which accepts a :class:`TestCase` or :class:`TestSuite`
70object as a parameter, and returns a result object. The class
71:class:`TestResult` is provided for use as the result object. :mod:`unittest`
72provides the :class:`TextTestRunner` as an example test runner which reports
73test results on the standard error stream by default. Alternate runners can be
74implemented for other environments (such as graphical environments) without any
75need to derive from a specific class.
Georg Brandl8ec7f652007-08-15 14:28:01 +000076
77
78.. seealso::
79
80 Module :mod:`doctest`
81 Another test-support module with a very different flavor.
82
83 `Simple Smalltalk Testing: With Patterns <http://www.XProgramming.com/testfram.htm>`_
84 Kent Beck's original paper on testing frameworks using the pattern shared by
85 :mod:`unittest`.
86
Raymond Hettinger21b617b2009-03-24 00:17:11 +000087 `Nose <http://code.google.com/p/python-nose/>`_ and `py.test <http://pytest.org>`_
88 Third-party unittest frameworks with a lighter-weight syntax
89 for writing tests. For example, ``assert func(10) == 42``.
90
91 `python-mock <http://python-mock.sourceforge.net/>`_ and `minimock <http://blog.ianbicking.org/minimock.html>`_
92 Tools for creating mock test objects (objects simulating external resources).
Georg Brandl8ec7f652007-08-15 14:28:01 +000093
94.. _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)
121 self.assert_(element in self.seq)
122
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):
126 self.assert_(element in self.seq)
127
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
137expected result; :meth:`~TestCase.assert_` to verify a condition; or
138: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
168 testchoice (__main__.TestSequenceFunctions) ... ok
169 testsample (__main__.TestSequenceFunctions) ... ok
170 testshuffle (__main__.TestSequenceFunctions) ... ok
171
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
181
182.. _organizing-tests:
183
184Organizing test code
185--------------------
186
187The basic building blocks of unit testing are :dfn:`test cases` --- single
188scenarios that must be set up and checked for correctness. In :mod:`unittest`,
189test cases are represented by instances of :mod:`unittest`'s :class:`TestCase`
190class. To make your own test cases you must write subclasses of
191:class:`TestCase`, or use :class:`FunctionTestCase`.
192
193An instance of a :class:`TestCase`\ -derived class is an object that can
194completely run a single test method, together with optional set-up and tidy-up
195code.
196
197The testing code of a :class:`TestCase` instance should be entirely self
198contained, such that it can be run either in isolation or in arbitrary
199combination with any number of other test cases.
200
Benjamin Peterson99721e02009-03-23 23:10:14 +0000201The simplest :class:`TestCase` subclass will simply override the
202:meth:`~TestCase.runTest` method in order to perform specific testing code::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000203
204 import unittest
205
206 class DefaultWidgetSizeTestCase(unittest.TestCase):
207 def runTest(self):
208 widget = Widget('The widget')
209 self.assertEqual(widget.size(), (50, 50), 'incorrect default size')
210
Gregory P. Smith28399852009-03-31 16:54:10 +0000211Note that in order to test something, we use the one of the :meth:`assert\*`
212methods provided by the :class:`TestCase` base class. If the
Georg Brandl8ec7f652007-08-15 14:28:01 +0000213test fails, an exception will be raised, and :mod:`unittest` will identify the
214test case as a :dfn:`failure`. Any other exceptions will be treated as
215:dfn:`errors`. This helps you identify where the problem is: :dfn:`failures` are
216caused by incorrect results - a 5 where you expected a 6. :dfn:`Errors` are
217caused by incorrect code - e.g., a :exc:`TypeError` caused by an incorrect
218function call.
219
220The way to run a test case will be described later. For now, note that to
221construct an instance of such a test case, we call its constructor without
222arguments::
223
224 testCase = DefaultWidgetSizeTestCase()
225
226Now, such test cases can be numerous, and their set-up can be repetitive. In
227the above case, constructing a :class:`Widget` in each of 100 Widget test case
228subclasses would mean unsightly duplication.
229
230Luckily, we can factor out such set-up code by implementing a method called
Benjamin Peterson99721e02009-03-23 23:10:14 +0000231:meth:`~TestCase.setUp`, which the testing framework will automatically call for
232us when we run the test::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000233
234 import unittest
235
236 class SimpleWidgetTestCase(unittest.TestCase):
237 def setUp(self):
238 self.widget = Widget('The widget')
239
240 class DefaultWidgetSizeTestCase(SimpleWidgetTestCase):
241 def runTest(self):
Gregory P. Smith28399852009-03-31 16:54:10 +0000242 self.assertTrue(self.widget.size() == (50,50),
Georg Brandl8ec7f652007-08-15 14:28:01 +0000243 'incorrect default size')
244
245 class WidgetResizeTestCase(SimpleWidgetTestCase):
246 def runTest(self):
247 self.widget.resize(100,150)
Gregory P. Smith28399852009-03-31 16:54:10 +0000248 self.assertTrue(self.widget.size() == (100,150),
Georg Brandl8ec7f652007-08-15 14:28:01 +0000249 'wrong size after resize')
250
Benjamin Peterson99721e02009-03-23 23:10:14 +0000251If the :meth:`~TestCase.setUp` method raises an exception while the test is
252running, the framework will consider the test to have suffered an error, and the
253:meth:`~TestCase.runTest` method will not be executed.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000254
Benjamin Peterson99721e02009-03-23 23:10:14 +0000255Similarly, we can provide a :meth:`~TestCase.tearDown` method that tidies up
256after the :meth:`~TestCase.runTest` method has been run::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000257
258 import unittest
259
260 class SimpleWidgetTestCase(unittest.TestCase):
261 def setUp(self):
262 self.widget = Widget('The widget')
263
264 def tearDown(self):
265 self.widget.dispose()
266 self.widget = None
267
Benjamin Peterson99721e02009-03-23 23:10:14 +0000268If :meth:`~TestCase.setUp` succeeded, the :meth:`~TestCase.tearDown` method will
269be run whether :meth:`~TestCase.runTest` succeeded or not.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000270
271Such a working environment for the testing code is called a :dfn:`fixture`.
272
273Often, many small test cases will use the same fixture. In this case, we would
274end up subclassing :class:`SimpleWidgetTestCase` into many small one-method
275classes such as :class:`DefaultWidgetSizeTestCase`. This is time-consuming and
Georg Brandl8ec7f652007-08-15 14:28:01 +0000276discouraging, so in the same vein as JUnit, :mod:`unittest` provides a simpler
277mechanism::
278
279 import unittest
280
281 class WidgetTestCase(unittest.TestCase):
282 def setUp(self):
283 self.widget = Widget('The widget')
284
285 def tearDown(self):
286 self.widget.dispose()
287 self.widget = None
288
289 def testDefaultSize(self):
Gregory P. Smith28399852009-03-31 16:54:10 +0000290 self.assertTrue(self.widget.size() == (50,50),
Georg Brandl8ec7f652007-08-15 14:28:01 +0000291 'incorrect default size')
292
293 def testResize(self):
294 self.widget.resize(100,150)
Gregory P. Smith28399852009-03-31 16:54:10 +0000295 self.assertTrue(self.widget.size() == (100,150),
Georg Brandl8ec7f652007-08-15 14:28:01 +0000296 'wrong size after resize')
297
Benjamin Peterson99721e02009-03-23 23:10:14 +0000298Here we have not provided a :meth:`~TestCase.runTest` method, but have instead
299provided two different test methods. Class instances will now each run one of
300the :meth:`test\*` methods, with ``self.widget`` created and destroyed
301separately for each instance. When creating an instance we must specify the
302test method it is to run. We do this by passing the method name in the
303constructor::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000304
305 defaultSizeTestCase = WidgetTestCase('testDefaultSize')
306 resizeTestCase = WidgetTestCase('testResize')
307
308Test case instances are grouped together according to the features they test.
309:mod:`unittest` provides a mechanism for this: the :dfn:`test suite`,
310represented by :mod:`unittest`'s :class:`TestSuite` class::
311
312 widgetTestSuite = unittest.TestSuite()
313 widgetTestSuite.addTest(WidgetTestCase('testDefaultSize'))
314 widgetTestSuite.addTest(WidgetTestCase('testResize'))
315
316For the ease of running tests, as we will see later, it is a good idea to
317provide in each test module a callable object that returns a pre-built test
318suite::
319
320 def suite():
321 suite = unittest.TestSuite()
322 suite.addTest(WidgetTestCase('testDefaultSize'))
323 suite.addTest(WidgetTestCase('testResize'))
324 return suite
325
326or even::
327
328 def suite():
329 tests = ['testDefaultSize', 'testResize']
330
331 return unittest.TestSuite(map(WidgetTestCase, tests))
332
333Since it is a common pattern to create a :class:`TestCase` subclass with many
334similarly named test functions, :mod:`unittest` provides a :class:`TestLoader`
335class that can be used to automate the process of creating a test suite and
336populating it with individual tests. For example, ::
337
338 suite = unittest.TestLoader().loadTestsFromTestCase(WidgetTestCase)
339
340will create a test suite that will run ``WidgetTestCase.testDefaultSize()`` and
341``WidgetTestCase.testResize``. :class:`TestLoader` uses the ``'test'`` method
342name prefix to identify test methods automatically.
343
344Note that the order in which the various test cases will be run is determined by
345sorting the test function names with the built-in :func:`cmp` function.
346
347Often it is desirable to group suites of test cases together, so as to run tests
348for the whole system at once. This is easy, since :class:`TestSuite` instances
349can be added to a :class:`TestSuite` just as :class:`TestCase` instances can be
350added to a :class:`TestSuite`::
351
352 suite1 = module1.TheTestSuite()
353 suite2 = module2.TheTestSuite()
354 alltests = unittest.TestSuite([suite1, suite2])
355
356You can place the definitions of test cases and test suites in the same modules
357as the code they are to test (such as :file:`widget.py`), but there are several
358advantages to placing the test code in a separate module, such as
359:file:`test_widget.py`:
360
361* The test module can be run standalone from the command line.
362
363* The test code can more easily be separated from shipped code.
364
365* There is less temptation to change test code to fit the code it tests without
366 a good reason.
367
368* Test code should be modified much less frequently than the code it tests.
369
370* Tested code can be refactored more easily.
371
372* Tests for modules written in C must be in separate modules anyway, so why not
373 be consistent?
374
375* If the testing strategy changes, there is no need to change the source code.
376
377
378.. _legacy-unit-tests:
379
380Re-using old test code
381----------------------
382
383Some users will find that they have existing test code that they would like to
384run from :mod:`unittest`, without converting every old test function to a
385:class:`TestCase` subclass.
386
387For this reason, :mod:`unittest` provides a :class:`FunctionTestCase` class.
388This subclass of :class:`TestCase` can be used to wrap an existing test
389function. Set-up and tear-down functions can also be provided.
390
391Given the following test function::
392
393 def testSomething():
394 something = makeSomething()
395 assert something.name is not None
396 # ...
397
398one can create an equivalent test case instance as follows::
399
400 testcase = unittest.FunctionTestCase(testSomething)
401
402If there are additional set-up and tear-down methods that should be called as
403part of the test case's operation, they can also be provided like so::
404
405 testcase = unittest.FunctionTestCase(testSomething,
406 setUp=makeSomethingDB,
407 tearDown=deleteSomethingDB)
408
409To make migrating existing test suites easier, :mod:`unittest` supports tests
410raising :exc:`AssertionError` to indicate test failure. However, it is
411recommended that you use the explicit :meth:`TestCase.fail\*` and
412:meth:`TestCase.assert\*` methods instead, as future versions of :mod:`unittest`
413may treat :exc:`AssertionError` differently.
414
415.. note::
416
417 Even though :class:`FunctionTestCase` can be used to quickly convert an existing
418 test base over to a :mod:`unittest`\ -based system, this approach is not
419 recommended. Taking the time to set up proper :class:`TestCase` subclasses will
420 make future test refactorings infinitely easier.
421
Benjamin Peterson99721e02009-03-23 23:10:14 +0000422In some cases, the existing tests may have been written using the :mod:`doctest`
423module. If so, :mod:`doctest` provides a :class:`DocTestSuite` class that can
424automatically build :class:`unittest.TestSuite` instances from the existing
425:mod:`doctest`\ -based tests.
426
Georg Brandl8ec7f652007-08-15 14:28:01 +0000427
Benjamin Peterson692428e2009-03-23 21:50:21 +0000428.. _unittest-skipping:
429
430Skipping tests and expected failures
431------------------------------------
432
433Unittest supports skipping individual test methods and even whole classes of
434tests. In addition, it supports marking a test as a "expected failure," a test
435that is broken and will fail, but shouldn't be counted as a failure on a
436:class:`TestResult`.
437
438Skipping a test is simply a matter of using the :func:`skip` :term:`decorator`
439or one of its conditional variants.
440
441Basic skipping looks like this: ::
442
443 class MyTestCase(unittest.TestCase):
444
445 @unittest.skip("demonstrating skipping")
446 def test_nothing(self):
447 self.fail("shouldn't happen")
448
Benjamin Petersonbe76d4c2009-03-29 03:16:57 +0000449 @unittest.skipIf(mylib.__version__ < (1, 3), "not supported in this library version")
450 def test_format(self):
Benjamin Peterson097aafd2009-03-29 03:39:58 +0000451 # Tests that work for only a certain version of the library.
Benjamin Petersonbe76d4c2009-03-29 03:16:57 +0000452 pass
453
454 @unittest.skipUnless(sys.platform.startswith("win"), "requires Windows")
455 def test_windows_support(self):
456 # windows specific testing code
457 pass
458
Benjamin Peterson692428e2009-03-23 21:50:21 +0000459This is the output of running the example above in verbose mode: ::
460
Benjamin Peterson097aafd2009-03-29 03:39:58 +0000461 test_format (__main__.MyTestCase) ... skipped 'not supported in this library version'
Benjamin Peterson692428e2009-03-23 21:50:21 +0000462 test_nothing (__main__.MyTestCase) ... skipped 'demonstrating skipping'
Benjamin Petersonbe76d4c2009-03-29 03:16:57 +0000463 test_windows_support (__main__.MyTestCase) ... skipped 'requires Windows'
Benjamin Peterson692428e2009-03-23 21:50:21 +0000464
465 ----------------------------------------------------------------------
Benjamin Petersonbe76d4c2009-03-29 03:16:57 +0000466 Ran 3 tests in 0.005s
467
468 OK (skipped=3)
Benjamin Peterson692428e2009-03-23 21:50:21 +0000469
470Classes can be skipped just like methods: ::
471
472 @skip("showing class skipping")
473 class MySkippedTestCase(unittest.TestCase):
474 def test_not_run(self):
475 pass
476
Benjamin Peterson31b78062009-03-23 23:13:36 +0000477:meth:`TestCase.setUp` can also skip the test. This is useful when a resource
478that needs to be set up is not available.
479
Benjamin Peterson692428e2009-03-23 21:50:21 +0000480Expected failures use the :func:`expectedFailure` decorator. ::
481
482 class ExpectedFailureTestCase(unittest.TestCase):
483 @unittest.expectedFailure
484 def test_fail(self):
485 self.assertEqual(1, 0, "broken")
486
487It's easy to roll your own skipping decorators by making a decorator that calls
488:func:`skip` on the test when it wants it to be skipped. This decorator skips
489the test unless the passed object has a certain attribute: ::
490
491 def skipUnlessHasattr(obj, attr):
492 if hasattr(obj, attr):
493 return lambda func: func
494 return unittest.skip("{0!r} doesn't have {1!r}".format(obj, attr))
495
496The following decorators implement test skipping and expected failures:
497
498.. function:: skip(reason)
499
500 Unconditionally skip the decorated test. *reason* should describe why the
501 test is being skipped.
502
503.. function:: skipIf(condition, reason)
504
505 Skip the decorated test if *condition* is true.
506
507.. function:: skipUnless(condition, reason)
508
509 Skip the decoratored test unless *condition* is true.
510
511.. function:: expectedFailure
512
513 Mark the test as an expected failure. If the test fails when run, the test
514 is not counted as a failure.
515
516
Georg Brandl8ec7f652007-08-15 14:28:01 +0000517.. _unittest-contents:
518
519Classes and functions
520---------------------
521
Benjamin Peterson99721e02009-03-23 23:10:14 +0000522This section describes in depth the API of :mod:`unittest`.
523
524
525.. _testcase-objects:
526
527Test cases
528~~~~~~~~~~
Georg Brandl8ec7f652007-08-15 14:28:01 +0000529
530.. class:: TestCase([methodName])
531
532 Instances of the :class:`TestCase` class represent the smallest testable units
533 in the :mod:`unittest` universe. This class is intended to be used as a base
534 class, with specific tests being implemented by concrete subclasses. This class
535 implements the interface needed by the test runner to allow it to drive the
536 test, and methods that the test code can use to check for and report various
537 kinds of failure.
538
539 Each instance of :class:`TestCase` will run a single test method: the method
540 named *methodName*. If you remember, we had an earlier example that went
541 something like this::
542
543 def suite():
544 suite = unittest.TestSuite()
545 suite.addTest(WidgetTestCase('testDefaultSize'))
546 suite.addTest(WidgetTestCase('testResize'))
547 return suite
548
549 Here, we create two instances of :class:`WidgetTestCase`, each of which runs a
550 single test.
551
Benjamin Peterson99721e02009-03-23 23:10:14 +0000552 *methodName* defaults to :meth:`runTest`.
553
554 :class:`TestCase` instances provide three groups of methods: one group used
555 to run the test, another used by the test implementation to check conditions
556 and report failures, and some inquiry methods allowing information about the
557 test itself to be gathered.
558
559 Methods in the first group (running the test) are:
560
561
562 .. method:: setUp()
563
564 Method called to prepare the test fixture. This is called immediately
565 before calling the test method; any exception raised by this method will
566 be considered an error rather than a test failure. The default
567 implementation does nothing.
568
569
570 .. method:: tearDown()
571
572 Method called immediately after the test method has been called and the
573 result recorded. This is called even if the test method raised an
574 exception, so the implementation in subclasses may need to be particularly
575 careful about checking internal state. Any exception raised by this
576 method will be considered an error rather than a test failure. This
577 method will only be called if the :meth:`setUp` succeeds, regardless of
578 the outcome of the test method. The default implementation does nothing.
579
580
581 .. method:: run([result])
582
583 Run the test, collecting the result into the test result object passed as
584 *result*. If *result* is omitted or :const:`None`, a temporary result
585 object is created (by calling the :meth:`defaultTestCase` method) and
586 used; this result object is not returned to :meth:`run`'s caller.
587
588 The same effect may be had by simply calling the :class:`TestCase`
589 instance.
590
591
Benjamin Peterson47d97382009-03-26 20:05:50 +0000592 .. method:: skipTest(reason)
Benjamin Peterson99721e02009-03-23 23:10:14 +0000593
Benjamin Peterson31b78062009-03-23 23:13:36 +0000594 Calling this during the a test method or :meth:`setUp` skips the current
595 test. See :ref:`unittest-skipping` for more information.
Benjamin Peterson99721e02009-03-23 23:10:14 +0000596
597
598 .. method:: debug()
599
600 Run the test without collecting the result. This allows exceptions raised
601 by the test to be propagated to the caller, and can be used to support
602 running tests under a debugger.
603
604 The test code can use any of the following methods to check for and report
605 failures.
606
607
Gregory P. Smith28399852009-03-31 16:54:10 +0000608 .. method:: assertTrue(expr[, msg])
609 assert_(expr[, msg])
Benjamin Peterson99721e02009-03-23 23:10:14 +0000610 failUnless(expr[, msg])
Benjamin Peterson99721e02009-03-23 23:10:14 +0000611
612 Signal a test failure if *expr* is false; the explanation for the error
613 will be *msg* if given, otherwise it will be :const:`None`.
614
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000615 .. deprecated:: 2.7
616 :meth:`failUnless`.
617
Benjamin Peterson99721e02009-03-23 23:10:14 +0000618
619 .. method:: assertEqual(first, second[, msg])
620 failUnlessEqual(first, second[, msg])
621
622 Test that *first* and *second* are equal. If the values do not compare
623 equal, the test will fail with the explanation given by *msg*, or
Gregory P. Smith28399852009-03-31 16:54:10 +0000624 :const:`None`. Note that using :meth:`assertEqual` improves upon
625 doing the comparison as the first parameter to :meth:`assertTrue`: the
626 default value for *msg* include representations of both *first* and
627 *second*.
628
629 In addition, if *first* and *second* are the exact same type and one of
630 list, tuple, dict, set, or frozenset or any type that a subclass
631 registers :meth:`addTypeEqualityFunc` the type specific equality function
632 will be called in order to generate a more useful default error message.
633
634 .. versionchanged:: 2.7
635 Added the automatic calling of type specific equality function.
Benjamin Peterson99721e02009-03-23 23:10:14 +0000636
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000637 .. deprecated:: 2.7
638 :meth:`failUnlessEqual`.
639
Benjamin Peterson99721e02009-03-23 23:10:14 +0000640
641 .. method:: assertNotEqual(first, second[, msg])
642 failIfEqual(first, second[, msg])
643
644 Test that *first* and *second* are not equal. If the values do compare
645 equal, the test will fail with the explanation given by *msg*, or
Gregory P. Smith28399852009-03-31 16:54:10 +0000646 :const:`None`. Note that using :meth:`assertNotEqual` improves upon doing
647 the comparison as the first parameter to :meth:`assertTrue` is that the
Benjamin Peterson99721e02009-03-23 23:10:14 +0000648 default value for *msg* can be computed to include representations of both
649 *first* and *second*.
650
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000651 .. deprecated:: 2.7
652 :meth:`failIfEqual`.
653
Benjamin Peterson99721e02009-03-23 23:10:14 +0000654
655 .. method:: assertAlmostEqual(first, second[, places[, msg]])
656 failUnlessAlmostEqual(first, second[, places[, msg]])
657
658 Test that *first* and *second* are approximately equal by computing the
659 difference, rounding to the given number of decimal *places* (default 7),
660 and comparing to zero.
661
662 Note that comparing a given number of decimal places is not the same as
663 comparing a given number of significant digits. If the values do not
664 compare equal, the test will fail with the explanation given by *msg*, or
665 :const:`None`.
666
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000667 .. deprecated:: 2.7
668 :meth:`failUnlessAlmostEqual`.
669
Benjamin Peterson99721e02009-03-23 23:10:14 +0000670
671 .. method:: assertNotAlmostEqual(first, second[, places[, msg]])
672 failIfAlmostEqual(first, second[, places[, msg]])
673
674 Test that *first* and *second* are not approximately equal by computing
675 the difference, rounding to the given number of decimal *places* (default
676 7), and comparing to zero.
677
678 Note that comparing a given number of decimal places is not the same as
679 comparing a given number of significant digits. If the values do not
680 compare equal, the test will fail with the explanation given by *msg*, or
681 :const:`None`.
682
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000683 .. deprecated:: 2.7
684 :meth:`failIfAlmostEqual`.
685
Benjamin Peterson99721e02009-03-23 23:10:14 +0000686
Gregory P. Smith28399852009-03-31 16:54:10 +0000687 .. method:: assertGreater(first, second, msg=None)
688 assertGreaterEqual(first, second, msg=None)
689 assertLess(first, second, msg=None)
690 assertLessEqual(first, second, msg=None)
691
692 Test that *first* is respectively >, >=, < or <= than *second* depending
693 on the method name. If not, the test will fail with the nice explanation
694 or with the explanation given by *msg*::
695
696 >>> self.assertGreaterEqual(3, 4)
697 AssertionError: "3" unexpectedly not greater than or equal to "4"
698
699 .. versionadded:: 2.7
700
701
702 .. method:: assertMultiLineEqual(self, first, second, msg=None)
703
704 Test that the multiline string *first* is equal to the string *second*.
705 When not equal a diff of the two strings highlighting the differences
706 will be included in the error message.
707
708 If specified *msg* will be used as the error message on failure.
709
710 .. versionadded:: 2.7
711
712
713 .. method:: assertRegexpMatches(text, regexp[, msg=None]):
714
715 Verifies that a *regexp* search matches *text*. Fails with an error
716 message including the pattern and the *text*. *regexp* may be
717 a regular expression object or a string containing a regular expression
718 suitable for use by :func:`re.search`.
719
720 .. versionadded:: 2.7
721
722
723 .. method:: assertIn(first, second, msg=None)
724 assertNotIn(first, second, msg=None)
725
726 Tests that *first* is or is not in *second* with a nice explanitory error
727 message as appropriate.
728
729 If specified *msg* will be used as the error message on failure.
730
731 .. versionadded:: 2.7
732
733
734 .. method:: assertSameElements(expected, actual, msg=None)
735
736 Test that sequence *expected* contains the same elements as *actual*.
737 When they don't an error message listing the differences between the
738 sequences will be generated.
739
740 If specified *msg* will be used as the error message on failure.
741
742 .. versionadded:: 2.7
743
744
745 .. method:: assertSetEqual(set1, set2, msg=None)
746
747 Tests that two sets are equal. If not, an error message is constructed
748 that lists the differences between the sets.
749
750 Fails if either of *set1* or *set2* does not have a :meth:`set.difference`
751 method.
752
753 If specified *msg* will be used as the error message on failure.
754
755 .. versionadded:: 2.7
756
757
758 .. method:: assertDictEqual(expected, actual, msg=None)
759
760 Test that two dictionaries are equal. If not, an error message is
761 constructed that shows the differences in the dictionaries.
762
763 If specified *msg* will be used as the error message on failure.
764
765 .. versionadded:: 2.7
766
767
768 .. method:: assertDictContainsSubset(expected, actual, msg=None)
769
770 Tests whether the key value pairs in dictionary *actual* are a
771 superset of those in *expected*. If not, an error message listing
772 the missing keys and mismatched values is generated.
773
774 If specified *msg* will be used as the error message on failure.
775
776 .. versionadded:: 2.7
777
778
779 .. method:: assertListEqual(list1, list2, msg=None)
780 assertTupleEqual(tuple1, tuple2, msg=None)
781
782 Tests that two lists or tuples are equal. If not an error message is
783 constructed that shows only the differences between the two. An error
784 is also raised if either of the parameters are of the wrong type.
785
786 If specified *msg* will be used as the error message on failure.
787
788 .. versionadded:: 2.7
789
790
791 .. method:: assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)
792
793 Tests that two sequences are equal. If a *seq_type* is supplied, both
794 *seq1* and *seq2* must be instances of *seq_type* or a failure will
795 be raised. If the sequences are different an error message is
796 constructed that shows the difference between the two.
797
798 If specified *msg* will be used as the error message on failure.
799
800 This method is used to implement :meth:`assertListEqual` and
801 :meth:`assertTupleEqual`.
802
803 .. versionadded:: 2.7
804
805
Benjamin Peterson99721e02009-03-23 23:10:14 +0000806 .. method:: assertRaises(exception[, callable, ...])
807 failUnlessRaises(exception[, callable, ...])
808
809 Test that an exception is raised when *callable* is called with any
810 positional or keyword arguments that are also passed to
811 :meth:`assertRaises`. The test passes if *exception* is raised, is an
812 error if another exception is raised, or fails if no exception is raised.
813 To catch any of a group of exceptions, a tuple containing the exception
814 classes may be passed as *exception*.
815
Benjamin Peterson7233acc2009-03-29 03:31:40 +0000816 If *callable* is omitted or None, returns a context manager so that the
817 code under test can be written inline rather than as a function::
818
819 with self.failUnlessRaises(some_error_class):
820 do_something()
821
Benjamin Peterson99721e02009-03-23 23:10:14 +0000822 .. versionchanged:: 2.7
Benjamin Peterson7233acc2009-03-29 03:31:40 +0000823 Added the ability to use :meth:`assertRaises` as a context manager.
Benjamin Peterson99721e02009-03-23 23:10:14 +0000824
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000825 .. deprecated:: 2.7
826 :meth:`failUnlessRaises`.
827
Benjamin Peterson99721e02009-03-23 23:10:14 +0000828
Gregory P. Smith28399852009-03-31 16:54:10 +0000829 .. method:: assertRaisesRegexp(exception, regexp[, callable, ...])
Benjamin Peterson99721e02009-03-23 23:10:14 +0000830
Gregory P. Smith28399852009-03-31 16:54:10 +0000831 Like :meth:`assertRaises` but also tests that *regexp* matches
832 on the string representation of the raised exception. *regexp* may be
833 a regular expression object or a string containing a regular expression
834 suitable for use by :func:`re.search`. Examples::
835
836 self.assertRaisesRegexp(ValueError, 'invalid literal for.*XYZ$',
837 int, 'XYZ')
838
839 or::
840
841 with self.assertRaisesRegexp(ValueError, 'literal'):
842 int('XYZ')
843
844 .. versionadded:: 2.7
845
846
847 .. method:: assertIsNone(expr[, msg])
848
849 This signals a test failure if *expr* is not None.
850
851 .. versionadded:: 2.7
852
853
854 .. method:: assertIsNotNone(expr[, msg])
855
856 The inverse of the :meth:`assertIsNone` method.
857 This signals a test failure if *expr* is None.
858
859 .. versionadded:: 2.7
860
861
862 .. method:: assertFalse(expr[, msg])
863 failIf(expr[, msg])
864
865 The inverse of the :meth:`assertTrue` method is the :meth:`assertFalse` method.
Benjamin Peterson99721e02009-03-23 23:10:14 +0000866 This signals a test failure if *expr* is true, with *msg* or :const:`None`
867 for the error message.
868
Gregory P. Smith65ff0052009-03-31 19:59:14 +0000869 .. deprecated:: 2.7
870 :meth:`failIf`.
871
Benjamin Peterson99721e02009-03-23 23:10:14 +0000872
873 .. method:: fail([msg])
874
875 Signals a test failure unconditionally, with *msg* or :const:`None` for
876 the error message.
877
878
879 .. attribute:: failureException
880
881 This class attribute gives the exception raised by the test method. If a
882 test framework needs to use a specialized exception, possibly to carry
883 additional information, it must subclass this exception in order to "play
884 fair" with the framework. The initial value of this attribute is
885 :exc:`AssertionError`.
886
Michael Foord345b2fe2009-04-02 03:20:38 +0000887
888 .. attribute:: longMessage
889
890 If set to True then any explicit failure message you pass in to the
891 assert methods will be appended to the end of the normal failure message.
892 The normal messages contain useful information about the objects involved,
893 for example the message from assertEqual shows you the repr of the two
894 unequal objects. Setting this attribute to True allows you to have a
895 custom error message in addition to the normal one.
896
897 This attribute defaults to False, meaning that a custom message passed
898 to an assert method will silence the normal message.
899
900 The class setting can be overridden in individual tests by assigning an
901 instance attribute to True or False before calling the assert methods.
902
903 .. versionadded:: 2.7
904
905
Benjamin Peterson99721e02009-03-23 23:10:14 +0000906 Testing frameworks can use the following methods to collect information on
907 the test:
908
909
910 .. method:: countTestCases()
911
912 Return the number of tests represented by this test object. For
913 :class:`TestCase` instances, this will always be ``1``.
914
915
916 .. method:: defaultTestResult()
917
918 Return an instance of the test result class that should be used for this
919 test case class (if no other result instance is provided to the
920 :meth:`run` method).
921
922 For :class:`TestCase` instances, this will always be an instance of
923 :class:`TestResult`; subclasses of :class:`TestCase` should override this
924 as necessary.
925
926
927 .. method:: id()
928
929 Return a string identifying the specific test case. This is usually the
930 full name of the test method, including the module and class name.
931
932
933 .. method:: shortDescription()
934
Gregory P. Smith28399852009-03-31 16:54:10 +0000935 Returns a description of the test, or :const:`None` if no description
936 has been provided. The default implementation of this method
937 returns the first line of the test method's docstring, if available,
938 along with the method name.
939
940 .. versionchanged:: 2.7
941
942 In earlier versions this only returned the first line of the test
943 method's docstring, if available or the :const:`None`. That led to
944 undesirable behavior of not printing the test name when someone was
945 thoughtful enough to write a docstring.
946
947
948 .. method:: addTypeEqualityFunc(typeobj, function)
949
950 Registers a type specific :meth:`assertEqual` equality checking
951 function to be called by :meth:`assertEqual` when both objects it has
952 been asked to compare are exactly *typeobj* (not subclasses).
953 *function* must take two positional arguments and a third msg=None
954 keyword argument just as :meth:`assertEqual` does. It must raise
955 self.failureException when inequality between the first two
956 parameters is detected.
957
958 One good use of custom equality checking functions for a type
959 is to raise self.failureException with an error message useful
960 for debugging the by explaining the inequalities in detail.
961
962 .. versionadded:: 2.7
Georg Brandl8ec7f652007-08-15 14:28:01 +0000963
964
965.. class:: FunctionTestCase(testFunc[, setUp[, tearDown[, description]]])
966
967 This class implements the portion of the :class:`TestCase` interface which
968 allows the test runner to drive the test, but does not provide the methods which
969 test code can use to check and report errors. This is used to create test cases
970 using legacy test code, allowing it to be integrated into a :mod:`unittest`\
971 -based test framework.
972
973
Benjamin Peterson99721e02009-03-23 23:10:14 +0000974.. _testsuite-objects:
975
976Grouping tests
977~~~~~~~~~~~~~~
978
Georg Brandl8ec7f652007-08-15 14:28:01 +0000979.. class:: TestSuite([tests])
980
981 This class represents an aggregation of individual tests cases and test suites.
982 The class presents the interface needed by the test runner to allow it to be run
983 as any other test case. Running a :class:`TestSuite` instance is the same as
984 iterating over the suite, running each test individually.
985
986 If *tests* is given, it must be an iterable of individual test cases or other
987 test suites that will be used to build the suite initially. Additional methods
988 are provided to add test cases and suites to the collection later on.
989
Benjamin Peterson99721e02009-03-23 23:10:14 +0000990 :class:`TestSuite` (including :class:`ClassTestSuite`) objects behave much
991 like :class:`TestCase` objects, except they do not actually implement a test.
992 Instead, they are used to aggregate tests into groups of tests that should be
993 run together. Some additional methods are available to add tests to
994 :class:`TestSuite` instances:
995
996
997 .. method:: TestSuite.addTest(test)
998
999 Add a :class:`TestCase` or :class:`TestSuite` to the suite.
1000
1001
1002 .. method:: TestSuite.addTests(tests)
1003
1004 Add all the tests from an iterable of :class:`TestCase` and :class:`TestSuite`
1005 instances to this test suite.
1006
1007 This is equivalent to iterating over *tests*, calling :meth:`addTest` for each
1008 element.
1009
1010 :class:`TestSuite` shares the following methods with :class:`TestCase`:
1011
1012
1013 .. method:: run(result)
1014
1015 Run the tests associated with this suite, collecting the result into the
1016 test result object passed as *result*. Note that unlike
1017 :meth:`TestCase.run`, :meth:`TestSuite.run` requires the result object to
1018 be passed in.
1019
1020
1021 .. method:: debug()
1022
1023 Run the tests associated with this suite without collecting the
1024 result. This allows exceptions raised by the test to be propagated to the
1025 caller and can be used to support running tests under a debugger.
1026
1027
1028 .. method:: countTestCases()
1029
1030 Return the number of tests represented by this test object, including all
1031 individual tests and sub-suites.
1032
1033 In the typical usage of a :class:`TestSuite` object, the :meth:`run` method
1034 is invoked by a :class:`TestRunner` rather than by the end-user test harness.
1035
1036
Benjamin Peterson692428e2009-03-23 21:50:21 +00001037.. class:: ClassTestSuite(tests, collected_from)
1038
1039 This subclass of :class:`TestSuite` repesents an aggregation of individuals
1040 tests from one :class:`TestCase` class. *tests* is an iterable of
1041 :class:`TestCase` instances created from the class. *collected_from* is the
1042 class they came from.
1043
Georg Brandl8ec7f652007-08-15 14:28:01 +00001044
Benjamin Peterson99721e02009-03-23 23:10:14 +00001045Loading and running tests
1046~~~~~~~~~~~~~~~~~~~~~~~~~
1047
Georg Brandl8ec7f652007-08-15 14:28:01 +00001048.. class:: TestLoader()
1049
Benjamin Peterson99721e02009-03-23 23:10:14 +00001050 The :class:`TestLoader` class is used to create test suites from classes and
1051 modules. Normally, there is no need to create an instance of this class; the
1052 :mod:`unittest` module provides an instance that can be shared as
1053 ``unittest.defaultTestLoader``. Using a subclass or instance, however, allows
1054 customization of some configurable properties.
1055
1056 :class:`TestLoader` objects have the following methods:
Georg Brandl8ec7f652007-08-15 14:28:01 +00001057
1058
Benjamin Peterson99721e02009-03-23 23:10:14 +00001059 .. method:: loadTestsFromTestCase(testCaseClass)
Georg Brandl8ec7f652007-08-15 14:28:01 +00001060
Benjamin Peterson99721e02009-03-23 23:10:14 +00001061 Return a suite of all tests cases contained in the :class:`TestCase`\ -derived
1062 :class:`testCaseClass`.
1063
1064
1065 .. method:: loadTestsFromModule(module)
1066
1067 Return a suite of all tests cases contained in the given module. This
1068 method searches *module* for classes derived from :class:`TestCase` and
1069 creates an instance of the class for each test method defined for the
1070 class.
1071
1072 .. warning::
1073
1074 While using a hierarchy of :class:`TestCase`\ -derived classes can be
1075 convenient in sharing fixtures and helper functions, defining test
1076 methods on base classes that are not intended to be instantiated
1077 directly does not play well with this method. Doing so, however, can
1078 be useful when the fixtures are different and defined in subclasses.
1079
1080
1081 .. method:: loadTestsFromName(name[, module])
1082
1083 Return a suite of all tests cases given a string specifier.
1084
1085 The specifier *name* is a "dotted name" that may resolve either to a
1086 module, a test case class, a test method within a test case class, a
1087 :class:`TestSuite` instance, or a callable object which returns a
1088 :class:`TestCase` or :class:`TestSuite` instance. These checks are
1089 applied in the order listed here; that is, a method on a possible test
1090 case class will be picked up as "a test method within a test case class",
1091 rather than "a callable object".
1092
1093 For example, if you have a module :mod:`SampleTests` containing a
1094 :class:`TestCase`\ -derived class :class:`SampleTestCase` with three test
1095 methods (:meth:`test_one`, :meth:`test_two`, and :meth:`test_three`), the
1096 specifier ``'SampleTests.SampleTestCase'`` would cause this method to return a
1097 suite which will run all three test methods. Using the specifier
1098 ``'SampleTests.SampleTestCase.test_two'`` would cause it to return a test suite
1099 which will run only the :meth:`test_two` test method. The specifier can refer
1100 to modules and packages which have not been imported; they will be imported as a
1101 side-effect.
1102
1103 The method optionally resolves *name* relative to the given *module*.
1104
1105
1106 .. method:: loadTestsFromNames(names[, module])
1107
1108 Similar to :meth:`loadTestsFromName`, but takes a sequence of names rather
1109 than a single name. The return value is a test suite which supports all
1110 the tests defined for each name.
1111
1112
1113 .. method:: getTestCaseNames(testCaseClass)
1114
1115 Return a sorted sequence of method names found within *testCaseClass*;
1116 this should be a subclass of :class:`TestCase`.
1117
1118 The following attributes of a :class:`TestLoader` can be configured either by
1119 subclassing or assignment on an instance:
1120
1121
1122 .. attribute:: testMethodPrefix
1123
1124 String giving the prefix of method names which will be interpreted as test
1125 methods. The default value is ``'test'``.
1126
1127 This affects :meth:`getTestCaseNames` and all the :meth:`loadTestsFrom\*`
1128 methods.
1129
1130
1131 .. attribute:: sortTestMethodsUsing
1132
1133 Function to be used to compare method names when sorting them in
1134 :meth:`getTestCaseNames` and all the :meth:`loadTestsFrom\*` methods. The
1135 default value is the built-in :func:`cmp` function; the attribute can also
1136 be set to :const:`None` to disable the sort.
1137
1138
1139 .. attribute:: suiteClass
1140
1141 Callable object that constructs a test suite from a list of tests. No
1142 methods on the resulting object are needed. The default value is the
1143 :class:`TestSuite` class.
1144
1145 This affects all the :meth:`loadTestsFrom\*` methods.
1146
1147
1148 .. attribute:: classSuiteClass
1149
1150 Callable object that constructs a test suite for the tests cases from one
1151 class. The default value is :class:`ClassTestSuite`.
1152
1153
1154.. class:: TestResult
1155
1156 This class is used to compile information about which tests have succeeded
1157 and which have failed.
1158
1159 A :class:`TestResult` object stores the results of a set of tests. The
1160 :class:`TestCase` and :class:`TestSuite` classes ensure that results are
1161 properly recorded; test authors do not need to worry about recording the
1162 outcome of tests.
1163
1164 Testing frameworks built on top of :mod:`unittest` may want access to the
1165 :class:`TestResult` object generated by running a set of tests for reporting
1166 purposes; a :class:`TestResult` instance is returned by the
1167 :meth:`TestRunner.run` method for this purpose.
1168
1169 :class:`TestResult` instances have the following attributes that will be of
1170 interest when inspecting the results of running a set of tests:
1171
1172
1173 .. attribute:: errors
1174
1175 A list containing 2-tuples of :class:`TestCase` instances and strings
1176 holding formatted tracebacks. Each tuple represents a test which raised an
1177 unexpected exception.
1178
1179 .. versionchanged:: 2.2
1180
1181 Contains formatted tracebacks instead of :func:`sys.exc_info` results.
1182
1183
1184 .. attribute:: failures
1185
1186 A list containing 2-tuples of :class:`TestCase` instances and strings
1187 holding formatted tracebacks. Each tuple represents a test where a failure
1188 was explicitly signalled using the :meth:`TestCase.fail\*` or
1189 :meth:`TestCase.assert\*` methods.
1190
1191 .. versionchanged:: 2.2
1192
1193 Contains formatted tracebacks instead of :func:`sys.exc_info` results.
1194
1195 .. attribute:: skipped
1196
1197 A list containing 2-tuples of :class:`TestCase` instances and strings
1198 holding the reason for skipping the test.
1199
1200 .. versionadded:: 2.7
1201
1202 .. attribute:: expectedFailures
1203
1204 A list contaning 2-tuples of :class:`TestCase` instances and strings
1205 holding formatted tracebacks. Each tuple represents a expected failures
1206 of the test case.
1207
1208 .. attribute:: unexpectedSuccesses
1209
1210 A list containing :class:`TestCase` instances that were marked as expected
1211 failures, but succeeded.
1212
1213 .. attribute:: shouldStop
1214
1215 Set to ``True`` when the execution of tests should stop by :meth:`stop`.
1216
1217
1218 .. attribute:: testsRun
1219
1220 The total number of tests run so far.
1221
1222
1223 .. method:: wasSuccessful()
1224
1225 Return :const:`True` if all tests run so far have passed, otherwise returns
1226 :const:`False`.
1227
1228
1229 .. method:: stop()
1230
1231 This method can be called to signal that the set of tests being run should
1232 be aborted by setting the :attr:`shouldStop` attribute to :const:`True`.
1233 :class:`TestRunner` objects should respect this flag and return without
1234 running any additional tests.
1235
1236 For example, this feature is used by the :class:`TextTestRunner` class to
1237 stop the test framework when the user signals an interrupt from the
1238 keyboard. Interactive tools which provide :class:`TestRunner`
1239 implementations can use this in a similar manner.
1240
1241 The following methods of the :class:`TestResult` class are used to maintain
1242 the internal data structures, and may be extended in subclasses to support
1243 additional reporting requirements. This is particularly useful in building
1244 tools which support interactive reporting while tests are being run.
1245
1246
1247 .. method:: startTest(test)
1248
1249 Called when the test case *test* is about to be run.
1250
1251 The default implementation simply increments the instance's :attr:`testsRun`
1252 counter.
1253
1254
1255 .. method:: stopTest(test)
1256
1257 Called after the test case *test* has been executed, regardless of the
1258 outcome.
1259
1260 The default implementation does nothing.
1261
1262
1263 .. method:: addError(test, err)
1264
1265 Called when the test case *test* raises an unexpected exception *err* is a
1266 tuple of the form returned by :func:`sys.exc_info`: ``(type, value,
1267 traceback)``.
1268
1269 The default implementation appends a tuple ``(test, formatted_err)`` to
1270 the instance's :attr:`errors` attribute, where *formatted_err* is a
1271 formatted traceback derived from *err*.
1272
1273
1274 .. method:: addFailure(test, err)
1275
1276 Called when the test case *test* signals a failure. *err* is a tuple of the form
1277 returned by :func:`sys.exc_info`: ``(type, value, traceback)``.
1278
1279 The default implementation appends a tuple ``(test, formatted_err)`` to
1280 the instance's :attr:`failures` attribute, where *formatted_err* is a
1281 formatted traceback derived from *err*.
1282
1283
1284 .. method:: addSuccess(test)
1285
1286 Called when the test case *test* succeeds.
1287
1288 The default implementation does nothing.
1289
1290
1291 .. method:: addSkip(test, reason)
1292
1293 Called when the test case *test* is skipped. *reason* is the reason the
1294 test gave for skipping.
1295
1296 The default implementation appends a tuple ``(test, reason)`` to the
1297 instance's :attr:`skipped` attribute.
1298
1299
1300 .. method:: addExpectedFailure(test, err)
1301
1302 Called when the test case *test* fails, but was marked with the
1303 :func:`expectedFailure` decorator.
1304
1305 The default implementation appends a tuple ``(test, formatted_err)`` to
1306 the instance's :attr:`expectedFailures` attribute, where *formatted_err*
1307 is a formatted traceback derived from *err*.
1308
1309
1310 .. method:: addUnexpectedSuccess(test)
1311
1312 Called when the test case *test* was marked with the
1313 :func:`expectedFailure` decorator, but succeeded.
1314
1315 The default implementation appends the test to the instance's
1316 :attr:`unexpectedSuccesses` attribute.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001317
1318
1319.. data:: defaultTestLoader
1320
1321 Instance of the :class:`TestLoader` class intended to be shared. If no
1322 customization of the :class:`TestLoader` is needed, this instance can be used
1323 instead of repeatedly creating new instances.
1324
1325
1326.. class:: TextTestRunner([stream[, descriptions[, verbosity]]])
1327
1328 A basic test runner implementation which prints results on standard error. It
1329 has a few configurable parameters, but is essentially very simple. Graphical
1330 applications which run test suites should provide alternate implementations.
1331
1332
1333.. function:: main([module[, defaultTest[, argv[, testRunner[, testLoader]]]]])
1334
1335 A command-line program that runs a set of tests; this is primarily for making
1336 test modules conveniently executable. The simplest use for this function is to
1337 include the following line at the end of a test script::
1338
1339 if __name__ == '__main__':
1340 unittest.main()
1341
1342 The *testRunner* argument can either be a test runner class or an already
1343 created instance of it.