blob: a637e078e6438b04fbd0d2dde30e3a0a234b469a [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001:mod:`unittest` --- Unit testing framework
2==========================================
3
4.. module:: unittest
5 :synopsis: Unit testing framework for Python.
6.. moduleauthor:: Steve Purcell <stephen_purcell@yahoo.com>
7.. sectionauthor:: Steve Purcell <stephen_purcell@yahoo.com>
8.. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org>
9.. sectionauthor:: Raymond Hettinger <python@rcn.com>
10
11
Benjamin Peterson5254c042009-03-23 22:25:03 +000012.. versionchanged:: 3.1
Benjamin Peterson52baa292009-03-24 00:56:30 +000013 Added test :ref:`skipping and expected failures <unittest-skipping>`.
Benjamin Peterson5254c042009-03-23 22:25:03 +000014
Georg Brandl116aa622007-08-15 14:28:22 +000015The Python unit testing framework, sometimes referred to as "PyUnit," is a
16Python language version of JUnit, by Kent Beck and Erich Gamma. JUnit is, in
17turn, a Java version of Kent's Smalltalk testing framework. Each is the de
18facto standard unit testing framework for its respective language.
19
20:mod:`unittest` supports test automation, sharing of setup and shutdown code for
21tests, aggregation of tests into collections, and independence of the tests from
22the reporting framework. The :mod:`unittest` module provides classes that make
23it easy to support these qualities for a set of tests.
24
25To achieve this, :mod:`unittest` supports some important concepts:
26
27test fixture
28 A :dfn:`test fixture` represents the preparation needed to perform one or more
29 tests, and any associate cleanup actions. This may involve, for example,
30 creating temporary or proxy databases, directories, or starting a server
31 process.
32
33test case
34 A :dfn:`test case` is the smallest unit of testing. It checks for a specific
35 response to a particular set of inputs. :mod:`unittest` provides a base class,
36 :class:`TestCase`, which may be used to create new test cases.
37
38test suite
39 A :dfn:`test suite` is a collection of test cases, test suites, or both. It is
40 used to aggregate tests that should be executed together.
41
42test runner
43 A :dfn:`test runner` is a component which orchestrates the execution of tests
44 and provides the outcome to the user. The runner may use a graphical interface,
45 a textual interface, or return a special value to indicate the results of
46 executing the tests.
47
48The test case and test fixture concepts are supported through the
49:class:`TestCase` and :class:`FunctionTestCase` classes; the former should be
50used when creating new tests, and the latter can be used when integrating
51existing test code with a :mod:`unittest`\ -driven framework. When building test
Benjamin Peterson52baa292009-03-24 00:56:30 +000052fixtures using :class:`TestCase`, the :meth:`~TestCase.setUp` and
53:meth:`~TestCase.tearDown` methods can be overridden to provide initialization
54and cleanup for the fixture. With :class:`FunctionTestCase`, existing functions
55can be passed to the constructor for these purposes. When the test is run, the
56fixture initialization is run first; if it succeeds, the cleanup method is run
57after the test has been executed, regardless of the outcome of the test. Each
58instance of the :class:`TestCase` will only be used to run a single test method,
59so a new fixture is created for each test.
Georg Brandl116aa622007-08-15 14:28:22 +000060
61Test suites are implemented by the :class:`TestSuite` class. This class allows
62individual tests and test suites to be aggregated; when the suite is executed,
Benjamin Peterson14a3dd72009-05-25 00:51:58 +000063all tests added directly to the suite and in "child" test suites are run.
Georg Brandl116aa622007-08-15 14:28:22 +000064
Benjamin Peterson52baa292009-03-24 00:56:30 +000065A test runner is an object that provides a single method,
66:meth:`~TestRunner.run`, which accepts a :class:`TestCase` or :class:`TestSuite`
67object as a parameter, and returns a result object. The class
68:class:`TestResult` is provided for use as the result object. :mod:`unittest`
69provides the :class:`TextTestRunner` as an example test runner which reports
70test results on the standard error stream by default. Alternate runners can be
71implemented for other environments (such as graphical environments) without any
72need to derive from a specific class.
Georg Brandl116aa622007-08-15 14:28:22 +000073
74
75.. seealso::
76
77 Module :mod:`doctest`
78 Another test-support module with a very different flavor.
79
80 `Simple Smalltalk Testing: With Patterns <http://www.XProgramming.com/testfram.htm>`_
81 Kent Beck's original paper on testing frameworks using the pattern shared by
82 :mod:`unittest`.
83
Raymond Hettinger6b232cd2009-03-24 00:22:53 +000084 `Nose <http://code.google.com/p/python-nose/>`_ and `py.test <http://pytest.org>`_
85 Third-party unittest frameworks with a lighter-weight syntax
86 for writing tests. For example, ``assert func(10) == 42``.
87
88 `python-mock <http://python-mock.sourceforge.net/>`_ and `minimock <http://blog.ianbicking.org/minimock.html>`_
89 Tools for creating mock test objects (objects simulating external resources).
Georg Brandl116aa622007-08-15 14:28:22 +000090
91.. _unittest-minimal-example:
92
93Basic example
94-------------
95
96The :mod:`unittest` module provides a rich set of tools for constructing and
97running tests. This section demonstrates that a small subset of the tools
98suffice to meet the needs of most users.
99
100Here is a short script to test three functions from the :mod:`random` module::
101
102 import random
103 import unittest
104
105 class TestSequenceFunctions(unittest.TestCase):
106
107 def setUp(self):
Georg Brandla08a3c52009-08-13 08:40:50 +0000108 self.seq = list(range(10))
Georg Brandl116aa622007-08-15 14:28:22 +0000109
Benjamin Peterson52baa292009-03-24 00:56:30 +0000110 def test_shuffle(self):
Georg Brandl116aa622007-08-15 14:28:22 +0000111 # make sure the shuffled sequence does not lose any elements
112 random.shuffle(self.seq)
113 self.seq.sort()
Georg Brandla08a3c52009-08-13 08:40:50 +0000114 self.assertEqual(self.seq, list(range(10)))
Georg Brandl116aa622007-08-15 14:28:22 +0000115
Benjamin Peterson52baa292009-03-24 00:56:30 +0000116 def test_choice(self):
Georg Brandl116aa622007-08-15 14:28:22 +0000117 element = random.choice(self.seq)
118 self.assert_(element in self.seq)
119
Benjamin Peterson52baa292009-03-24 00:56:30 +0000120 def test_sample(self):
Georg Brandl116aa622007-08-15 14:28:22 +0000121 self.assertRaises(ValueError, random.sample, self.seq, 20)
122 for element in random.sample(self.seq, 5):
123 self.assert_(element in self.seq)
124
125 if __name__ == '__main__':
126 unittest.main()
127
Benjamin Peterson52baa292009-03-24 00:56:30 +0000128A testcase is created by subclassing :class:`unittest.TestCase`. The three
Georg Brandl116aa622007-08-15 14:28:22 +0000129individual tests are defined with methods whose names start with the letters
130``test``. This naming convention informs the test runner about which methods
131represent tests.
132
Benjamin Peterson52baa292009-03-24 00:56:30 +0000133The crux of each test is a call to :meth:`~TestCase.assertEqual` to check for an
134expected result; :meth:`~TestCase.assert_` to verify a condition; or
135:meth:`~TestCase.assertRaises` to verify that an expected exception gets raised.
136These methods are used instead of the :keyword:`assert` statement so the test
137runner can accumulate all test results and produce a report.
Georg Brandl116aa622007-08-15 14:28:22 +0000138
Benjamin Peterson52baa292009-03-24 00:56:30 +0000139When a :meth:`~TestCase.setUp` method is defined, the test runner will run that
140method prior to each test. Likewise, if a :meth:`~TestCase.tearDown` method is
141defined, the test runner will invoke that method after each test. In the
142example, :meth:`~TestCase.setUp` was used to create a fresh sequence for each
143test.
Georg Brandl116aa622007-08-15 14:28:22 +0000144
145The final block shows a simple way to run the tests. :func:`unittest.main`
146provides a command line interface to the test script. When run from the command
147line, the above script produces an output that looks like this::
148
149 ...
150 ----------------------------------------------------------------------
151 Ran 3 tests in 0.000s
152
153 OK
154
155Instead of :func:`unittest.main`, there are other ways to run the tests with a
156finer level of control, less terse output, and no requirement to be run from the
157command line. For example, the last two lines may be replaced with::
158
159 suite = unittest.TestLoader().loadTestsFromTestCase(TestSequenceFunctions)
160 unittest.TextTestRunner(verbosity=2).run(suite)
161
162Running the revised script from the interpreter or another script produces the
163following output::
164
165 testchoice (__main__.TestSequenceFunctions) ... ok
166 testsample (__main__.TestSequenceFunctions) ... ok
167 testshuffle (__main__.TestSequenceFunctions) ... ok
168
169 ----------------------------------------------------------------------
170 Ran 3 tests in 0.110s
171
172 OK
173
174The above examples show the most commonly used :mod:`unittest` features which
175are sufficient to meet many everyday testing needs. The remainder of the
176documentation explores the full feature set from first principles.
177
178
179.. _organizing-tests:
180
181Organizing test code
182--------------------
183
184The basic building blocks of unit testing are :dfn:`test cases` --- single
185scenarios that must be set up and checked for correctness. In :mod:`unittest`,
186test cases are represented by instances of :mod:`unittest`'s :class:`TestCase`
187class. To make your own test cases you must write subclasses of
188:class:`TestCase`, or use :class:`FunctionTestCase`.
189
190An instance of a :class:`TestCase`\ -derived class is an object that can
191completely run a single test method, together with optional set-up and tidy-up
192code.
193
194The testing code of a :class:`TestCase` instance should be entirely self
195contained, such that it can be run either in isolation or in arbitrary
196combination with any number of other test cases.
197
Benjamin Peterson52baa292009-03-24 00:56:30 +0000198The simplest :class:`TestCase` subclass will simply override the
199:meth:`~TestCase.runTest` method in order to perform specific testing code::
Georg Brandl116aa622007-08-15 14:28:22 +0000200
201 import unittest
202
203 class DefaultWidgetSizeTestCase(unittest.TestCase):
204 def runTest(self):
205 widget = Widget('The widget')
206 self.assertEqual(widget.size(), (50, 50), 'incorrect default size')
207
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000208Note that in order to test something, we use the one of the :meth:`assert\*`
209methods provided by the :class:`TestCase` base class. If the
Georg Brandl116aa622007-08-15 14:28:22 +0000210test fails, an exception will be raised, and :mod:`unittest` will identify the
211test case as a :dfn:`failure`. Any other exceptions will be treated as
212:dfn:`errors`. This helps you identify where the problem is: :dfn:`failures` are
213caused by incorrect results - a 5 where you expected a 6. :dfn:`Errors` are
214caused by incorrect code - e.g., a :exc:`TypeError` caused by an incorrect
215function call.
216
217The way to run a test case will be described later. For now, note that to
218construct an instance of such a test case, we call its constructor without
219arguments::
220
221 testCase = DefaultWidgetSizeTestCase()
222
223Now, such test cases can be numerous, and their set-up can be repetitive. In
224the above case, constructing a :class:`Widget` in each of 100 Widget test case
225subclasses would mean unsightly duplication.
226
227Luckily, we can factor out such set-up code by implementing a method called
Benjamin Peterson52baa292009-03-24 00:56:30 +0000228:meth:`~TestCase.setUp`, which the testing framework will automatically call for
229us when we run the test::
Georg Brandl116aa622007-08-15 14:28:22 +0000230
231 import unittest
232
233 class SimpleWidgetTestCase(unittest.TestCase):
234 def setUp(self):
235 self.widget = Widget('The widget')
236
237 class DefaultWidgetSizeTestCase(SimpleWidgetTestCase):
238 def runTest(self):
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000239 self.assertTrue(self.widget.size() == (50,50),
Georg Brandl116aa622007-08-15 14:28:22 +0000240 'incorrect default size')
241
242 class WidgetResizeTestCase(SimpleWidgetTestCase):
243 def runTest(self):
244 self.widget.resize(100,150)
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000245 self.assertTrue(self.widget.size() == (100,150),
Georg Brandl116aa622007-08-15 14:28:22 +0000246 'wrong size after resize')
247
Benjamin Peterson52baa292009-03-24 00:56:30 +0000248If the :meth:`~TestCase.setUp` method raises an exception while the test is
249running, the framework will consider the test to have suffered an error, and the
250:meth:`~TestCase.runTest` method will not be executed.
Georg Brandl116aa622007-08-15 14:28:22 +0000251
Benjamin Peterson52baa292009-03-24 00:56:30 +0000252Similarly, we can provide a :meth:`~TestCase.tearDown` method that tidies up
253after the :meth:`~TestCase.runTest` method has been run::
Georg Brandl116aa622007-08-15 14:28:22 +0000254
255 import unittest
256
257 class SimpleWidgetTestCase(unittest.TestCase):
258 def setUp(self):
259 self.widget = Widget('The widget')
260
261 def tearDown(self):
262 self.widget.dispose()
263 self.widget = None
264
Benjamin Peterson52baa292009-03-24 00:56:30 +0000265If :meth:`~TestCase.setUp` succeeded, the :meth:`~TestCase.tearDown` method will
266be run whether :meth:`~TestCase.runTest` succeeded or not.
Georg Brandl116aa622007-08-15 14:28:22 +0000267
268Such a working environment for the testing code is called a :dfn:`fixture`.
269
270Often, many small test cases will use the same fixture. In this case, we would
271end up subclassing :class:`SimpleWidgetTestCase` into many small one-method
272classes such as :class:`DefaultWidgetSizeTestCase`. This is time-consuming and
Georg Brandl116aa622007-08-15 14:28:22 +0000273discouraging, so in the same vein as JUnit, :mod:`unittest` provides a simpler
274mechanism::
275
276 import unittest
277
278 class WidgetTestCase(unittest.TestCase):
279 def setUp(self):
280 self.widget = Widget('The widget')
281
282 def tearDown(self):
283 self.widget.dispose()
284 self.widget = None
285
286 def testDefaultSize(self):
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000287 self.assertTrue(self.widget.size() == (50,50),
Georg Brandl116aa622007-08-15 14:28:22 +0000288 'incorrect default size')
289
290 def testResize(self):
291 self.widget.resize(100,150)
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000292 self.assertTrue(self.widget.size() == (100,150),
Georg Brandl116aa622007-08-15 14:28:22 +0000293 'wrong size after resize')
294
Benjamin Peterson52baa292009-03-24 00:56:30 +0000295Here we have not provided a :meth:`~TestCase.runTest` method, but have instead
296provided two different test methods. Class instances will now each run one of
297the :meth:`test\*` methods, with ``self.widget`` created and destroyed
298separately for each instance. When creating an instance we must specify the
299test method it is to run. We do this by passing the method name in the
300constructor::
Georg Brandl116aa622007-08-15 14:28:22 +0000301
302 defaultSizeTestCase = WidgetTestCase('testDefaultSize')
303 resizeTestCase = WidgetTestCase('testResize')
304
305Test case instances are grouped together according to the features they test.
306:mod:`unittest` provides a mechanism for this: the :dfn:`test suite`,
307represented by :mod:`unittest`'s :class:`TestSuite` class::
308
309 widgetTestSuite = unittest.TestSuite()
310 widgetTestSuite.addTest(WidgetTestCase('testDefaultSize'))
311 widgetTestSuite.addTest(WidgetTestCase('testResize'))
312
313For the ease of running tests, as we will see later, it is a good idea to
314provide in each test module a callable object that returns a pre-built test
315suite::
316
317 def suite():
318 suite = unittest.TestSuite()
319 suite.addTest(WidgetTestCase('testDefaultSize'))
320 suite.addTest(WidgetTestCase('testResize'))
321 return suite
322
323or even::
324
325 def suite():
326 tests = ['testDefaultSize', 'testResize']
327
328 return unittest.TestSuite(map(WidgetTestCase, tests))
329
330Since it is a common pattern to create a :class:`TestCase` subclass with many
331similarly named test functions, :mod:`unittest` provides a :class:`TestLoader`
332class that can be used to automate the process of creating a test suite and
333populating it with individual tests. For example, ::
334
335 suite = unittest.TestLoader().loadTestsFromTestCase(WidgetTestCase)
336
337will create a test suite that will run ``WidgetTestCase.testDefaultSize()`` and
338``WidgetTestCase.testResize``. :class:`TestLoader` uses the ``'test'`` method
339name prefix to identify test methods automatically.
340
Mark Dickinsonc48d8342009-02-01 14:18:10 +0000341Note that the order in which the various test cases will be run is
342determined by sorting the test function names with respect to the
343built-in ordering for strings.
Georg Brandl116aa622007-08-15 14:28:22 +0000344
345Often it is desirable to group suites of test cases together, so as to run tests
346for the whole system at once. This is easy, since :class:`TestSuite` instances
347can be added to a :class:`TestSuite` just as :class:`TestCase` instances can be
348added to a :class:`TestSuite`::
349
350 suite1 = module1.TheTestSuite()
351 suite2 = module2.TheTestSuite()
352 alltests = unittest.TestSuite([suite1, suite2])
353
354You can place the definitions of test cases and test suites in the same modules
355as the code they are to test (such as :file:`widget.py`), but there are several
356advantages to placing the test code in a separate module, such as
357:file:`test_widget.py`:
358
359* The test module can be run standalone from the command line.
360
361* The test code can more easily be separated from shipped code.
362
363* There is less temptation to change test code to fit the code it tests without
364 a good reason.
365
366* Test code should be modified much less frequently than the code it tests.
367
368* Tested code can be refactored more easily.
369
370* Tests for modules written in C must be in separate modules anyway, so why not
371 be consistent?
372
373* If the testing strategy changes, there is no need to change the source code.
374
375
376.. _legacy-unit-tests:
377
378Re-using old test code
379----------------------
380
381Some users will find that they have existing test code that they would like to
382run from :mod:`unittest`, without converting every old test function to a
383:class:`TestCase` subclass.
384
385For this reason, :mod:`unittest` provides a :class:`FunctionTestCase` class.
386This subclass of :class:`TestCase` can be used to wrap an existing test
387function. Set-up and tear-down functions can also be provided.
388
389Given the following test function::
390
391 def testSomething():
392 something = makeSomething()
393 assert something.name is not None
394 # ...
395
396one can create an equivalent test case instance as follows::
397
398 testcase = unittest.FunctionTestCase(testSomething)
399
400If there are additional set-up and tear-down methods that should be called as
401part of the test case's operation, they can also be provided like so::
402
403 testcase = unittest.FunctionTestCase(testSomething,
404 setUp=makeSomethingDB,
405 tearDown=deleteSomethingDB)
406
407To make migrating existing test suites easier, :mod:`unittest` supports tests
408raising :exc:`AssertionError` to indicate test failure. However, it is
409recommended that you use the explicit :meth:`TestCase.fail\*` and
410:meth:`TestCase.assert\*` methods instead, as future versions of :mod:`unittest`
411may treat :exc:`AssertionError` differently.
412
413.. note::
414
415 Even though :class:`FunctionTestCase` can be used to quickly convert an existing
416 test base over to a :mod:`unittest`\ -based system, this approach is not
417 recommended. Taking the time to set up proper :class:`TestCase` subclasses will
418 make future test refactorings infinitely easier.
419
Benjamin Peterson52baa292009-03-24 00:56:30 +0000420In some cases, the existing tests may have been written using the :mod:`doctest`
421module. If so, :mod:`doctest` provides a :class:`DocTestSuite` class that can
422automatically build :class:`unittest.TestSuite` instances from the existing
423:mod:`doctest`\ -based tests.
424
Georg Brandl116aa622007-08-15 14:28:22 +0000425
Benjamin Peterson5254c042009-03-23 22:25:03 +0000426.. _unittest-skipping:
427
428Skipping tests and expected failures
429------------------------------------
430
431Unittest supports skipping individual test methods and even whole classes of
432tests. In addition, it supports marking a test as a "expected failure," a test
433that is broken and will fail, but shouldn't be counted as a failure on a
434:class:`TestResult`.
435
436Skipping a test is simply a matter of using the :func:`skip` :term:`decorator`
437or one of its conditional variants.
438
439Basic skipping looks like this: ::
440
441 class MyTestCase(unittest.TestCase):
442
443 @unittest.skip("demonstrating skipping")
444 def test_nothing(self):
445 self.fail("shouldn't happen")
446
Benjamin Petersonded31c42009-03-30 15:04:16 +0000447 @unittest.skipIf(mylib.__version__ < (1, 3), "not supported in this library version")
448 def test_format(self):
449 # Tests that work for only a certain version of the library.
450 pass
451
452 @unittest.skipUnless(sys.platform.startswith("win"), "requires Windows")
453 def test_windows_support(self):
454 # windows specific testing code
455 pass
456
Benjamin Peterson5254c042009-03-23 22:25:03 +0000457This is the output of running the example above in verbose mode: ::
458
Benjamin Petersonded31c42009-03-30 15:04:16 +0000459 test_format (__main__.MyTestCase) ... skipped 'not supported in this library version'
Benjamin Peterson5254c042009-03-23 22:25:03 +0000460 test_nothing (__main__.MyTestCase) ... skipped 'demonstrating skipping'
Benjamin Petersonded31c42009-03-30 15:04:16 +0000461 test_windows_support (__main__.MyTestCase) ... skipped 'requires Windows'
Benjamin Peterson5254c042009-03-23 22:25:03 +0000462
463 ----------------------------------------------------------------------
Benjamin Petersonded31c42009-03-30 15:04:16 +0000464 Ran 3 tests in 0.005s
465
466 OK (skipped=3)
Benjamin Peterson5254c042009-03-23 22:25:03 +0000467
468Classes can be skipped just like methods: ::
469
470 @skip("showing class skipping")
471 class MySkippedTestCase(unittest.TestCase):
472 def test_not_run(self):
473 pass
474
Benjamin Peterson52baa292009-03-24 00:56:30 +0000475:meth:`TestCase.setUp` can also skip the test. This is useful when a resource
476that needs to be set up is not available.
477
Benjamin Peterson5254c042009-03-23 22:25:03 +0000478Expected failures use the :func:`expectedFailure` decorator. ::
479
480 class ExpectedFailureTestCase(unittest.TestCase):
481 @unittest.expectedFailure
482 def test_fail(self):
483 self.assertEqual(1, 0, "broken")
484
485It's easy to roll your own skipping decorators by making a decorator that calls
486:func:`skip` on the test when it wants it to be skipped. This decorator skips
487the test unless the passed object has a certain attribute: ::
488
489 def skipUnlessHasattr(obj, attr):
490 if hasattr(obj, attr):
491 return lambda func: func
492 return unittest.skip("{0!r} doesn't have {1!r}".format(obj, attr))
493
494The following decorators implement test skipping and expected failures:
495
496.. function:: skip(reason)
497
498 Unconditionally skip the decorated test. *reason* should describe why the
499 test is being skipped.
500
501.. function:: skipIf(condition, reason)
502
503 Skip the decorated test if *condition* is true.
504
505.. function:: skipUnless(condition, reason)
506
507 Skip the decoratored test unless *condition* is true.
508
509.. function:: expectedFailure
510
511 Mark the test as an expected failure. If the test fails when run, the test
512 is not counted as a failure.
513
514
Georg Brandl116aa622007-08-15 14:28:22 +0000515.. _unittest-contents:
516
517Classes and functions
518---------------------
519
Benjamin Peterson52baa292009-03-24 00:56:30 +0000520This section describes in depth the API of :mod:`unittest`.
521
522
523.. _testcase-objects:
524
525Test cases
526~~~~~~~~~~
Georg Brandl116aa622007-08-15 14:28:22 +0000527
Georg Brandlb044b2a2009-09-16 16:05:59 +0000528.. class:: TestCase(methodName='runTest')
Georg Brandl116aa622007-08-15 14:28:22 +0000529
530 Instances of the :class:`TestCase` class represent the smallest testable units
531 in the :mod:`unittest` universe. This class is intended to be used as a base
532 class, with specific tests being implemented by concrete subclasses. This class
533 implements the interface needed by the test runner to allow it to drive the
534 test, and methods that the test code can use to check for and report various
535 kinds of failure.
536
537 Each instance of :class:`TestCase` will run a single test method: the method
538 named *methodName*. If you remember, we had an earlier example that went
539 something like this::
540
541 def suite():
542 suite = unittest.TestSuite()
543 suite.addTest(WidgetTestCase('testDefaultSize'))
544 suite.addTest(WidgetTestCase('testResize'))
545 return suite
546
547 Here, we create two instances of :class:`WidgetTestCase`, each of which runs a
548 single test.
549
Benjamin Peterson52baa292009-03-24 00:56:30 +0000550 *methodName* defaults to :meth:`runTest`.
551
552 :class:`TestCase` instances provide three groups of methods: one group used
553 to run the test, another used by the test implementation to check conditions
554 and report failures, and some inquiry methods allowing information about the
555 test itself to be gathered.
556
557 Methods in the first group (running the test) are:
558
559
560 .. method:: setUp()
561
562 Method called to prepare the test fixture. This is called immediately
563 before calling the test method; any exception raised by this method will
564 be considered an error rather than a test failure. The default
565 implementation does nothing.
566
567
568 .. method:: tearDown()
569
570 Method called immediately after the test method has been called and the
571 result recorded. This is called even if the test method raised an
572 exception, so the implementation in subclasses may need to be particularly
573 careful about checking internal state. Any exception raised by this
574 method will be considered an error rather than a test failure. This
575 method will only be called if the :meth:`setUp` succeeds, regardless of
576 the outcome of the test method. The default implementation does nothing.
577
578
Georg Brandlb044b2a2009-09-16 16:05:59 +0000579 .. method:: run(result=None)
Benjamin Peterson52baa292009-03-24 00:56:30 +0000580
581 Run the test, collecting the result into the test result object passed as
582 *result*. If *result* is omitted or :const:`None`, a temporary result
Georg Brandlbcc484e2009-08-13 11:51:54 +0000583 object is created (by calling the :meth:`defaultTestResult` method) and
584 used. The result object is not returned to :meth:`run`'s caller.
Benjamin Peterson52baa292009-03-24 00:56:30 +0000585
586 The same effect may be had by simply calling the :class:`TestCase`
587 instance.
588
589
Benjamin Petersone549ead2009-03-28 21:42:05 +0000590 .. method:: skipTest(reason)
Benjamin Peterson52baa292009-03-24 00:56:30 +0000591
592 Calling this during the a test method or :meth:`setUp` skips the current
593 test. See :ref:`unittest-skipping` for more information.
594
595
596 .. method:: debug()
597
598 Run the test without collecting the result. This allows exceptions raised
599 by the test to be propagated to the caller, and can be used to support
600 running tests under a debugger.
601
602 The test code can use any of the following methods to check for and report
603 failures.
604
605
Georg Brandlb044b2a2009-09-16 16:05:59 +0000606 .. method:: assertTrue(expr, msg=None)
607 assert_(expr, msg=None)
608 failUnless(expr, msg=None)
Benjamin Peterson52baa292009-03-24 00:56:30 +0000609
Georg Brandlff2ad0e2009-04-27 16:51:45 +0000610 Signal a test failure if *expr* is false; the explanation for the failure
Benjamin Peterson52baa292009-03-24 00:56:30 +0000611 will be *msg* if given, otherwise it will be :const:`None`.
612
Raymond Hettinger35a88362009-04-09 00:08:24 +0000613 .. deprecated:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000614 :meth:`failUnless`.
615
Benjamin Peterson52baa292009-03-24 00:56:30 +0000616
Georg Brandlb044b2a2009-09-16 16:05:59 +0000617 .. method:: assertEqual(first, second, msg=None)
618 failUnlessEqual(first, second, msg=None)
Benjamin Peterson52baa292009-03-24 00:56:30 +0000619
620 Test that *first* and *second* are equal. If the values do not compare
621 equal, the test will fail with the explanation given by *msg*, or
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000622 :const:`None`. Note that using :meth:`assertEqual` improves upon
623 doing the comparison as the first parameter to :meth:`assertTrue`: the
624 default value for *msg* include representations of both *first* and
625 *second*.
626
627 In addition, if *first* and *second* are the exact same type and one of
628 list, tuple, dict, set, or frozenset or any type that a subclass
629 registers :meth:`addTypeEqualityFunc` the type specific equality function
630 will be called in order to generate a more useful default error message.
631
Raymond Hettinger35a88362009-04-09 00:08:24 +0000632 .. versionchanged:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000633 Added the automatic calling of type specific equality function.
634
Raymond Hettinger35a88362009-04-09 00:08:24 +0000635 .. deprecated:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000636 :meth:`failUnlessEqual`.
Benjamin Peterson52baa292009-03-24 00:56:30 +0000637
638
Georg Brandlb044b2a2009-09-16 16:05:59 +0000639 .. method:: assertNotEqual(first, second, msg=None)
640 failIfEqual(first, second, msg=None)
Benjamin Peterson52baa292009-03-24 00:56:30 +0000641
642 Test that *first* and *second* are not equal. If the values do compare
643 equal, the test will fail with the explanation given by *msg*, or
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000644 :const:`None`. Note that using :meth:`assertNotEqual` improves upon doing
645 the comparison as the first parameter to :meth:`assertTrue` is that the
Benjamin Peterson52baa292009-03-24 00:56:30 +0000646 default value for *msg* can be computed to include representations of both
647 *first* and *second*.
648
Raymond Hettinger35a88362009-04-09 00:08:24 +0000649 .. deprecated:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000650 :meth:`failIfEqual`.
651
Benjamin Peterson70e32c82009-03-24 01:00:11 +0000652
Georg Brandlb044b2a2009-09-16 16:05:59 +0000653 .. method:: assertAlmostEqual(first, second, *, places=7, msg=None)
654 failUnlessAlmostEqual(first, second, *, places=7, msg=None)
Benjamin Peterson52baa292009-03-24 00:56:30 +0000655
656 Test that *first* and *second* are approximately equal by computing the
657 difference, rounding to the given number of decimal *places* (default 7),
658 and comparing to zero.
659
660 Note that comparing a given number of decimal places is not the same as
661 comparing a given number of significant digits. If the values do not
662 compare equal, the test will fail with the explanation given by *msg*, or
663 :const:`None`.
664
Raymond Hettinger35a88362009-04-09 00:08:24 +0000665 .. deprecated:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000666 :meth:`failUnlessAlmostEqual`.
667
Benjamin Peterson52baa292009-03-24 00:56:30 +0000668
Georg Brandlb044b2a2009-09-16 16:05:59 +0000669 .. method:: assertNotAlmostEqual(first, second, *, places=7, msg=None)
670 failIfAlmostEqual(first, second, *, places=7, msg=None)
Benjamin Peterson52baa292009-03-24 00:56:30 +0000671
672 Test that *first* and *second* are not approximately equal by computing
673 the difference, rounding to the given number of decimal *places* (default
674 7), and comparing to zero.
675
676 Note that comparing a given number of decimal places is not the same as
677 comparing a given number of significant digits. If the values do not
678 compare equal, the test will fail with the explanation given by *msg*, or
679 :const:`None`.
680
Raymond Hettinger35a88362009-04-09 00:08:24 +0000681 .. deprecated:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000682 :meth:`failIfAlmostEqual`.
683
684
685 .. method:: assertGreater(first, second, msg=None)
686 assertGreaterEqual(first, second, msg=None)
687 assertLess(first, second, msg=None)
688 assertLessEqual(first, second, msg=None)
689
690 Test that *first* is respectively >, >=, < or <= than *second* depending
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000691 on the method name. If not, the test will fail with an explanation
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000692 or with the explanation given by *msg*::
693
694 >>> self.assertGreaterEqual(3, 4)
695 AssertionError: "3" unexpectedly not greater than or equal to "4"
696
Raymond Hettinger35a88362009-04-09 00:08:24 +0000697 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000698
699
700 .. method:: assertMultiLineEqual(self, first, second, msg=None)
701
702 Test that the multiline string *first* is equal to the string *second*.
703 When not equal a diff of the two strings highlighting the differences
704 will be included in the error message.
705
706 If specified *msg* will be used as the error message on failure.
707
Raymond Hettinger35a88362009-04-09 00:08:24 +0000708 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000709
710
Georg Brandlb044b2a2009-09-16 16:05:59 +0000711 .. method:: assertRegexpMatches(text, regexp, msg=None):
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000712
713 Verifies that a *regexp* search matches *text*. Fails with an error
714 message including the pattern and the *text*. *regexp* may be
715 a regular expression object or a string containing a regular expression
716 suitable for use by :func:`re.search`.
717
Raymond Hettinger35a88362009-04-09 00:08:24 +0000718 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000719
720
721 .. method:: assertIn(first, second, msg=None)
722 assertNotIn(first, second, msg=None)
723
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000724 Tests that *first* is or is not in *second* with an explanatory error
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000725 message as appropriate.
726
727 If specified *msg* will be used as the error message on failure.
728
Raymond Hettinger35a88362009-04-09 00:08:24 +0000729 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000730
731
732 .. method:: assertSameElements(expected, actual, msg=None)
733
734 Test that sequence *expected* contains the same elements as *actual*.
735 When they don't an error message listing the differences between the
736 sequences will be generated.
737
738 If specified *msg* will be used as the error message on failure.
739
Raymond Hettinger35a88362009-04-09 00:08:24 +0000740 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000741
742
743 .. method:: assertSetEqual(set1, set2, msg=None)
744
745 Tests that two sets are equal. If not, an error message is constructed
746 that lists the differences between the sets.
747
748 Fails if either of *set1* or *set2* does not have a :meth:`set.difference`
749 method.
750
751 If specified *msg* will be used as the error message on failure.
752
Raymond Hettinger35a88362009-04-09 00:08:24 +0000753 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000754
755
756 .. method:: assertDictEqual(expected, actual, msg=None)
757
758 Test that two dictionaries are equal. If not, an error message is
759 constructed that shows the differences in the dictionaries.
760
761 If specified *msg* will be used as the error message on failure.
762
Raymond Hettinger35a88362009-04-09 00:08:24 +0000763 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000764
765
766 .. method:: assertDictContainsSubset(expected, actual, msg=None)
767
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000768 Tests whether the key/value pairs in dictionary *actual* are a
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000769 superset of those in *expected*. If not, an error message listing
770 the missing keys and mismatched values is generated.
771
772 If specified *msg* will be used as the error message on failure.
773
Raymond Hettinger35a88362009-04-09 00:08:24 +0000774 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000775
776
777 .. method:: assertListEqual(list1, list2, msg=None)
778 assertTupleEqual(tuple1, tuple2, msg=None)
779
780 Tests that two lists or tuples are equal. If not an error message is
781 constructed that shows only the differences between the two. An error
782 is also raised if either of the parameters are of the wrong type.
783
784 If specified *msg* will be used as the error message on failure.
785
Raymond Hettinger35a88362009-04-09 00:08:24 +0000786 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000787
788
789 .. method:: assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)
790
791 Tests that two sequences are equal. If a *seq_type* is supplied, both
792 *seq1* and *seq2* must be instances of *seq_type* or a failure will
793 be raised. If the sequences are different an error message is
794 constructed that shows the difference between the two.
795
796 If specified *msg* will be used as the error message on failure.
797
798 This method is used to implement :meth:`assertListEqual` and
799 :meth:`assertTupleEqual`.
800
Raymond Hettinger35a88362009-04-09 00:08:24 +0000801 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000802
Benjamin Peterson52baa292009-03-24 00:56:30 +0000803
Georg Brandlb044b2a2009-09-16 16:05:59 +0000804 .. method:: assertRaises(exception, callable, *args, **kwds)
805 failUnlessRaises(exception, callable, *args, **kwds)
806 assertRaises(exception)
807 failUnlessRaises(exception)
Benjamin Peterson52baa292009-03-24 00:56:30 +0000808
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
Georg Brandlb044b2a2009-09-16 16:05:59 +0000816 If only the *exception* argument is given, returns a context manager so
817 that the code under test can be written inline rather than as a function::
Benjamin Petersonded31c42009-03-30 15:04:16 +0000818
819 with self.failUnlessRaises(some_error_class):
820 do_something()
821
Benjamin Peterson70e32c82009-03-24 01:00:11 +0000822 .. versionchanged:: 3.1
Benjamin Petersonded31c42009-03-30 15:04:16 +0000823 Added the ability to use :meth:`assertRaises` as a context manager.
Benjamin Peterson52baa292009-03-24 00:56:30 +0000824
Raymond Hettinger35a88362009-04-09 00:08:24 +0000825 .. deprecated:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000826 :meth:`failUnlessRaises`.
Benjamin Peterson52baa292009-03-24 00:56:30 +0000827
Benjamin Peterson52baa292009-03-24 00:56:30 +0000828
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000829 .. method:: assertRaisesRegexp(exception, regexp[, callable, ...])
830
831 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
Raymond Hettinger35a88362009-04-09 00:08:24 +0000844 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000845
846
Georg Brandlb044b2a2009-09-16 16:05:59 +0000847 .. method:: assertIsNone(expr, msg=None)
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000848
849 This signals a test failure if *expr* is not None.
850
Raymond Hettinger35a88362009-04-09 00:08:24 +0000851 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000852
853
Georg Brandlb044b2a2009-09-16 16:05:59 +0000854 .. method:: assertIsNotNone(expr, msg=None)
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000855
856 The inverse of the :meth:`assertIsNone` method.
857 This signals a test failure if *expr* is None.
858
Raymond Hettinger35a88362009-04-09 00:08:24 +0000859 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000860
861
Georg Brandlb044b2a2009-09-16 16:05:59 +0000862 .. method:: assertIs(expr1, expr2, msg=None)
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000863
864 This signals a test failure if *expr1* and *expr2* don't evaluate to the same
865 object.
866
Georg Brandl705d9d52009-05-05 09:29:50 +0000867 .. versionadded:: 3.1
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000868
869
Georg Brandlb044b2a2009-09-16 16:05:59 +0000870 .. method:: assertIsNot(expr1, expr2, msg=None)
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000871
872 The inverse of the :meth:`assertIs` method.
873 This signals a test failure if *expr1* and *expr2* evaluate to the same
874 object.
875
Georg Brandl705d9d52009-05-05 09:29:50 +0000876 .. versionadded:: 3.1
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000877
878
Georg Brandlb044b2a2009-09-16 16:05:59 +0000879 .. method:: assertFalse(expr, msg=None)
880 failIf(expr, msg=None)
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000881
882 The inverse of the :meth:`assertTrue` method is the :meth:`assertFalse` method.
Benjamin Peterson52baa292009-03-24 00:56:30 +0000883 This signals a test failure if *expr* is true, with *msg* or :const:`None`
884 for the error message.
885
Raymond Hettinger35a88362009-04-09 00:08:24 +0000886 .. deprecated:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000887 :meth:`failIf`.
888
Benjamin Peterson52baa292009-03-24 00:56:30 +0000889
Georg Brandlb044b2a2009-09-16 16:05:59 +0000890 .. method:: fail(msg=None)
Benjamin Peterson52baa292009-03-24 00:56:30 +0000891
892 Signals a test failure unconditionally, with *msg* or :const:`None` for
893 the error message.
894
895
896 .. attribute:: failureException
897
898 This class attribute gives the exception raised by the test method. If a
899 test framework needs to use a specialized exception, possibly to carry
900 additional information, it must subclass this exception in order to "play
901 fair" with the framework. The initial value of this attribute is
902 :exc:`AssertionError`.
903
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000904
905 .. attribute:: longMessage
906
907 If set to True then any explicit failure message you pass in to the
908 assert methods will be appended to the end of the normal failure message.
909 The normal messages contain useful information about the objects involved,
910 for example the message from assertEqual shows you the repr of the two
911 unequal objects. Setting this attribute to True allows you to have a
912 custom error message in addition to the normal one.
913
914 This attribute defaults to False, meaning that a custom message passed
915 to an assert method will silence the normal message.
916
917 The class setting can be overridden in individual tests by assigning an
918 instance attribute to True or False before calling the assert methods.
919
Raymond Hettinger35a88362009-04-09 00:08:24 +0000920 .. versionadded:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000921
922
Benjamin Peterson52baa292009-03-24 00:56:30 +0000923 Testing frameworks can use the following methods to collect information on
924 the test:
925
926
927 .. method:: countTestCases()
928
929 Return the number of tests represented by this test object. For
930 :class:`TestCase` instances, this will always be ``1``.
931
932
933 .. method:: defaultTestResult()
934
935 Return an instance of the test result class that should be used for this
936 test case class (if no other result instance is provided to the
937 :meth:`run` method).
938
939 For :class:`TestCase` instances, this will always be an instance of
940 :class:`TestResult`; subclasses of :class:`TestCase` should override this
941 as necessary.
942
943
944 .. method:: id()
945
946 Return a string identifying the specific test case. This is usually the
947 full name of the test method, including the module and class name.
948
949
950 .. method:: shortDescription()
951
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000952 Returns a description of the test, or :const:`None` if no description
953 has been provided. The default implementation of this method
954 returns the first line of the test method's docstring, if available,
955 along with the method name.
956
Raymond Hettinger35a88362009-04-09 00:08:24 +0000957 .. versionchanged:: 3.1
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000958 In earlier versions this only returned the first line of the test
959 method's docstring, if available or the :const:`None`. That led to
960 undesirable behavior of not printing the test name when someone was
961 thoughtful enough to write a docstring.
962
963
964 .. method:: addTypeEqualityFunc(typeobj, function)
965
966 Registers a type specific :meth:`assertEqual` equality checking
967 function to be called by :meth:`assertEqual` when both objects it has
968 been asked to compare are exactly *typeobj* (not subclasses).
969 *function* must take two positional arguments and a third msg=None
970 keyword argument just as :meth:`assertEqual` does. It must raise
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000971 ``self.failureException`` when inequality between the first two
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000972 parameters is detected.
973
974 One good use of custom equality checking functions for a type
Benjamin Petersonf47ed4a2009-04-11 20:45:40 +0000975 is to raise ``self.failureException`` with an error message useful
976 for debugging the problem by explaining the inequalities in detail.
Benjamin Peterson7fe73a12009-04-04 16:35:46 +0000977
Raymond Hettinger35a88362009-04-09 00:08:24 +0000978 .. versionadded:: 3.1
Georg Brandl116aa622007-08-15 14:28:22 +0000979
980
Georg Brandlb044b2a2009-09-16 16:05:59 +0000981 .. method:: addCleanup(function, *args, **kwargs)
Benjamin Peterson25c95f12009-05-08 20:42:26 +0000982
983 Add a function to be called after :meth:`tearDown` to cleanup resources
984 used during the test. Functions will be called in reverse order to the
985 order they are added (LIFO). They are called with any arguments and
986 keyword arguments passed into :meth:`addCleanup` when they are
987 added.
988
989 If :meth:`setUp` fails, meaning that :meth:`tearDown` is not called,
990 then any cleanup functions added will still be called.
991
992 .. versionadded:: 2.7
993
994
995 .. method:: doCleanups()
996
997 This method is called uncoditionally after :meth:`tearDown`, or
998 after :meth:`setUp` if :meth:`setUp` raises an exception.
999
1000 It is responsible for calling all the cleanup functions added by
1001 :meth:`addCleanup`. If you need cleanup functions to be called
1002 *prior* to :meth:`tearDown` then you can call :meth:`doCleanups`
1003 yourself.
1004
1005 :meth:`doCleanups` pops methods off the stack of cleanup
1006 functions one at a time, so it can be called at any time.
1007
1008 .. versionadded:: 2.7
1009
1010
Georg Brandlb044b2a2009-09-16 16:05:59 +00001011.. class:: FunctionTestCase(testFunc, setUp=None, tearDown=None, description=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001012
1013 This class implements the portion of the :class:`TestCase` interface which
1014 allows the test runner to drive the test, but does not provide the methods which
1015 test code can use to check and report errors. This is used to create test cases
1016 using legacy test code, allowing it to be integrated into a :mod:`unittest`\
1017 -based test framework.
1018
1019
Benjamin Peterson52baa292009-03-24 00:56:30 +00001020.. _testsuite-objects:
1021
Benjamin Peterson52baa292009-03-24 00:56:30 +00001022Grouping tests
1023~~~~~~~~~~~~~~
1024
Georg Brandlb044b2a2009-09-16 16:05:59 +00001025.. class:: TestSuite(tests=())
Georg Brandl116aa622007-08-15 14:28:22 +00001026
1027 This class represents an aggregation of individual tests cases and test suites.
1028 The class presents the interface needed by the test runner to allow it to be run
1029 as any other test case. Running a :class:`TestSuite` instance is the same as
1030 iterating over the suite, running each test individually.
1031
1032 If *tests* is given, it must be an iterable of individual test cases or other
1033 test suites that will be used to build the suite initially. Additional methods
1034 are provided to add test cases and suites to the collection later on.
1035
Benjamin Peterson14a3dd72009-05-25 00:51:58 +00001036 :class:`TestSuite` objects behave much like :class:`TestCase` objects, except
1037 they do not actually implement a test. Instead, they are used to aggregate
1038 tests into groups of tests that should be run together. Some additional
1039 methods are available to add tests to :class:`TestSuite` instances:
Benjamin Peterson52baa292009-03-24 00:56:30 +00001040
1041
1042 .. method:: TestSuite.addTest(test)
1043
1044 Add a :class:`TestCase` or :class:`TestSuite` to the suite.
1045
1046
1047 .. method:: TestSuite.addTests(tests)
1048
1049 Add all the tests from an iterable of :class:`TestCase` and :class:`TestSuite`
1050 instances to this test suite.
1051
1052 This is equivalent to iterating over *tests*, calling :meth:`addTest` for each
1053 element.
1054
1055 :class:`TestSuite` shares the following methods with :class:`TestCase`:
1056
1057
1058 .. method:: run(result)
1059
1060 Run the tests associated with this suite, collecting the result into the
1061 test result object passed as *result*. Note that unlike
1062 :meth:`TestCase.run`, :meth:`TestSuite.run` requires the result object to
1063 be passed in.
1064
1065
1066 .. method:: debug()
1067
1068 Run the tests associated with this suite without collecting the
1069 result. This allows exceptions raised by the test to be propagated to the
1070 caller and can be used to support running tests under a debugger.
1071
1072
1073 .. method:: countTestCases()
1074
1075 Return the number of tests represented by this test object, including all
1076 individual tests and sub-suites.
1077
Benjamin Peterson25c95f12009-05-08 20:42:26 +00001078
1079 .. method:: __iter__()
1080
1081 Tests grouped by a :class:`TestSuite` are always accessed by iteration.
1082 Subclasses can lazily provide tests by overriding :meth:`__iter__`. Note
1083 that this method maybe called several times on a single suite
1084 (for example when counting tests or comparing for equality)
1085 so the tests returned must be the same for repeated iterations.
1086
1087 .. versionchanged:: 2.7
1088 In earlier versions the :class:`TestSuite` accessed tests directly rather
1089 than through iteration, so overriding :meth:`__iter__` wasn't sufficient
1090 for providing tests.
1091
Benjamin Peterson52baa292009-03-24 00:56:30 +00001092 In the typical usage of a :class:`TestSuite` object, the :meth:`run` method
1093 is invoked by a :class:`TestRunner` rather than by the end-user test harness.
1094
1095
Benjamin Peterson52baa292009-03-24 00:56:30 +00001096Loading and running tests
1097~~~~~~~~~~~~~~~~~~~~~~~~~
1098
Georg Brandl116aa622007-08-15 14:28:22 +00001099.. class:: TestLoader()
1100
Benjamin Peterson52baa292009-03-24 00:56:30 +00001101 The :class:`TestLoader` class is used to create test suites from classes and
1102 modules. Normally, there is no need to create an instance of this class; the
1103 :mod:`unittest` module provides an instance that can be shared as
1104 ``unittest.defaultTestLoader``. Using a subclass or instance, however, allows
1105 customization of some configurable properties.
1106
1107 :class:`TestLoader` objects have the following methods:
Georg Brandl116aa622007-08-15 14:28:22 +00001108
1109
Benjamin Peterson52baa292009-03-24 00:56:30 +00001110 .. method:: loadTestsFromTestCase(testCaseClass)
Georg Brandl116aa622007-08-15 14:28:22 +00001111
Benjamin Peterson52baa292009-03-24 00:56:30 +00001112 Return a suite of all tests cases contained in the :class:`TestCase`\ -derived
1113 :class:`testCaseClass`.
1114
1115
1116 .. method:: loadTestsFromModule(module)
1117
1118 Return a suite of all tests cases contained in the given module. This
1119 method searches *module* for classes derived from :class:`TestCase` and
1120 creates an instance of the class for each test method defined for the
1121 class.
1122
Georg Brandle720c0a2009-04-27 16:20:50 +00001123 .. note::
Benjamin Peterson52baa292009-03-24 00:56:30 +00001124
1125 While using a hierarchy of :class:`TestCase`\ -derived classes can be
1126 convenient in sharing fixtures and helper functions, defining test
1127 methods on base classes that are not intended to be instantiated
1128 directly does not play well with this method. Doing so, however, can
1129 be useful when the fixtures are different and defined in subclasses.
1130
1131
Georg Brandlb044b2a2009-09-16 16:05:59 +00001132 .. method:: loadTestsFromName(name, module=None)
Benjamin Peterson52baa292009-03-24 00:56:30 +00001133
1134 Return a suite of all tests cases given a string specifier.
1135
1136 The specifier *name* is a "dotted name" that may resolve either to a
1137 module, a test case class, a test method within a test case class, a
1138 :class:`TestSuite` instance, or a callable object which returns a
1139 :class:`TestCase` or :class:`TestSuite` instance. These checks are
1140 applied in the order listed here; that is, a method on a possible test
1141 case class will be picked up as "a test method within a test case class",
1142 rather than "a callable object".
1143
1144 For example, if you have a module :mod:`SampleTests` containing a
1145 :class:`TestCase`\ -derived class :class:`SampleTestCase` with three test
1146 methods (:meth:`test_one`, :meth:`test_two`, and :meth:`test_three`), the
1147 specifier ``'SampleTests.SampleTestCase'`` would cause this method to return a
1148 suite which will run all three test methods. Using the specifier
1149 ``'SampleTests.SampleTestCase.test_two'`` would cause it to return a test suite
1150 which will run only the :meth:`test_two` test method. The specifier can refer
1151 to modules and packages which have not been imported; they will be imported as a
1152 side-effect.
1153
1154 The method optionally resolves *name* relative to the given *module*.
1155
1156
Georg Brandlb044b2a2009-09-16 16:05:59 +00001157 .. method:: loadTestsFromNames(names, module=None)
Benjamin Peterson52baa292009-03-24 00:56:30 +00001158
1159 Similar to :meth:`loadTestsFromName`, but takes a sequence of names rather
1160 than a single name. The return value is a test suite which supports all
1161 the tests defined for each name.
1162
1163
1164 .. method:: getTestCaseNames(testCaseClass)
1165
1166 Return a sorted sequence of method names found within *testCaseClass*;
1167 this should be a subclass of :class:`TestCase`.
1168
1169 The following attributes of a :class:`TestLoader` can be configured either by
1170 subclassing or assignment on an instance:
1171
1172
1173 .. attribute:: testMethodPrefix
1174
1175 String giving the prefix of method names which will be interpreted as test
1176 methods. The default value is ``'test'``.
1177
1178 This affects :meth:`getTestCaseNames` and all the :meth:`loadTestsFrom\*`
1179 methods.
1180
1181
1182 .. attribute:: sortTestMethodsUsing
1183
1184 Function to be used to compare method names when sorting them in
1185 :meth:`getTestCaseNames` and all the :meth:`loadTestsFrom\*` methods.
1186
1187
1188 .. attribute:: suiteClass
1189
1190 Callable object that constructs a test suite from a list of tests. No
1191 methods on the resulting object are needed. The default value is the
1192 :class:`TestSuite` class.
1193
1194 This affects all the :meth:`loadTestsFrom\*` methods.
1195
1196
Benjamin Peterson52baa292009-03-24 00:56:30 +00001197.. class:: TestResult
1198
1199 This class is used to compile information about which tests have succeeded
1200 and which have failed.
1201
1202 A :class:`TestResult` object stores the results of a set of tests. The
1203 :class:`TestCase` and :class:`TestSuite` classes ensure that results are
1204 properly recorded; test authors do not need to worry about recording the
1205 outcome of tests.
1206
1207 Testing frameworks built on top of :mod:`unittest` may want access to the
1208 :class:`TestResult` object generated by running a set of tests for reporting
1209 purposes; a :class:`TestResult` instance is returned by the
1210 :meth:`TestRunner.run` method for this purpose.
1211
1212 :class:`TestResult` instances have the following attributes that will be of
1213 interest when inspecting the results of running a set of tests:
1214
1215
1216 .. attribute:: errors
1217
1218 A list containing 2-tuples of :class:`TestCase` instances and strings
1219 holding formatted tracebacks. Each tuple represents a test which raised an
1220 unexpected exception.
1221
Benjamin Peterson52baa292009-03-24 00:56:30 +00001222 .. attribute:: failures
1223
1224 A list containing 2-tuples of :class:`TestCase` instances and strings
1225 holding formatted tracebacks. Each tuple represents a test where a failure
1226 was explicitly signalled using the :meth:`TestCase.fail\*` or
1227 :meth:`TestCase.assert\*` methods.
1228
Benjamin Peterson52baa292009-03-24 00:56:30 +00001229 .. attribute:: skipped
1230
1231 A list containing 2-tuples of :class:`TestCase` instances and strings
1232 holding the reason for skipping the test.
1233
Benjamin Peterson70e32c82009-03-24 01:00:11 +00001234 .. versionadded:: 3.1
Benjamin Peterson52baa292009-03-24 00:56:30 +00001235
1236 .. attribute:: expectedFailures
1237
1238 A list contaning 2-tuples of :class:`TestCase` instances and strings
1239 holding formatted tracebacks. Each tuple represents a expected failures
1240 of the test case.
1241
1242 .. attribute:: unexpectedSuccesses
1243
1244 A list containing :class:`TestCase` instances that were marked as expected
1245 failures, but succeeded.
1246
1247 .. attribute:: shouldStop
1248
1249 Set to ``True`` when the execution of tests should stop by :meth:`stop`.
1250
1251
1252 .. attribute:: testsRun
1253
1254 The total number of tests run so far.
1255
1256
1257 .. method:: wasSuccessful()
1258
1259 Return :const:`True` if all tests run so far have passed, otherwise returns
1260 :const:`False`.
1261
1262
1263 .. method:: stop()
1264
1265 This method can be called to signal that the set of tests being run should
1266 be aborted by setting the :attr:`shouldStop` attribute to :const:`True`.
1267 :class:`TestRunner` objects should respect this flag and return without
1268 running any additional tests.
1269
1270 For example, this feature is used by the :class:`TextTestRunner` class to
1271 stop the test framework when the user signals an interrupt from the
1272 keyboard. Interactive tools which provide :class:`TestRunner`
1273 implementations can use this in a similar manner.
1274
1275 The following methods of the :class:`TestResult` class are used to maintain
1276 the internal data structures, and may be extended in subclasses to support
1277 additional reporting requirements. This is particularly useful in building
1278 tools which support interactive reporting while tests are being run.
1279
1280
1281 .. method:: startTest(test)
1282
1283 Called when the test case *test* is about to be run.
1284
1285 The default implementation simply increments the instance's :attr:`testsRun`
1286 counter.
1287
1288
1289 .. method:: stopTest(test)
1290
1291 Called after the test case *test* has been executed, regardless of the
1292 outcome.
1293
1294 The default implementation does nothing.
1295
1296
Benjamin Peterson25c95f12009-05-08 20:42:26 +00001297 .. method:: startTestRun(test)
1298
1299 Called once before any tests are executed.
1300
1301 .. versionadded:: 2.7
1302
1303
1304 .. method:: stopTestRun(test)
1305
1306 Called once before any tests are executed.
1307
1308 .. versionadded:: 2.7
1309
1310
Benjamin Peterson52baa292009-03-24 00:56:30 +00001311 .. method:: addError(test, err)
1312
1313 Called when the test case *test* raises an unexpected exception *err* is a
1314 tuple of the form returned by :func:`sys.exc_info`: ``(type, value,
1315 traceback)``.
1316
1317 The default implementation appends a tuple ``(test, formatted_err)`` to
1318 the instance's :attr:`errors` attribute, where *formatted_err* is a
1319 formatted traceback derived from *err*.
1320
1321
1322 .. method:: addFailure(test, err)
1323
1324 Called when the test case *test* signals a failure. *err* is a tuple of the form
1325 returned by :func:`sys.exc_info`: ``(type, value, traceback)``.
1326
1327 The default implementation appends a tuple ``(test, formatted_err)`` to
1328 the instance's :attr:`failures` attribute, where *formatted_err* is a
1329 formatted traceback derived from *err*.
1330
1331
1332 .. method:: addSuccess(test)
1333
1334 Called when the test case *test* succeeds.
1335
1336 The default implementation does nothing.
1337
1338
1339 .. method:: addSkip(test, reason)
1340
1341 Called when the test case *test* is skipped. *reason* is the reason the
1342 test gave for skipping.
1343
1344 The default implementation appends a tuple ``(test, reason)`` to the
1345 instance's :attr:`skipped` attribute.
1346
1347
1348 .. method:: addExpectedFailure(test, err)
1349
1350 Called when the test case *test* fails, but was marked with the
1351 :func:`expectedFailure` decorator.
1352
1353 The default implementation appends a tuple ``(test, formatted_err)`` to
1354 the instance's :attr:`expectedFailures` attribute, where *formatted_err*
1355 is a formatted traceback derived from *err*.
1356
1357
1358 .. method:: addUnexpectedSuccess(test)
1359
1360 Called when the test case *test* was marked with the
1361 :func:`expectedFailure` decorator, but succeeded.
1362
1363 The default implementation appends the test to the instance's
1364 :attr:`unexpectedSuccesses` attribute.
Georg Brandl116aa622007-08-15 14:28:22 +00001365
1366
1367.. data:: defaultTestLoader
1368
1369 Instance of the :class:`TestLoader` class intended to be shared. If no
1370 customization of the :class:`TestLoader` is needed, this instance can be used
1371 instead of repeatedly creating new instances.
1372
1373
Georg Brandlb044b2a2009-09-16 16:05:59 +00001374.. class:: TextTestRunner(stream=sys.stderr, descriptions=True, verbosity=1)
Georg Brandl116aa622007-08-15 14:28:22 +00001375
1376 A basic test runner implementation which prints results on standard error. It
1377 has a few configurable parameters, but is essentially very simple. Graphical
1378 applications which run test suites should provide alternate implementations.
1379
Benjamin Peterson25c95f12009-05-08 20:42:26 +00001380 .. method:: _makeResult()
Georg Brandl116aa622007-08-15 14:28:22 +00001381
Benjamin Peterson25c95f12009-05-08 20:42:26 +00001382 This method returns the instance of ``TestResult`` used by :meth:`run`.
1383 It is not intended to be called directly, but can be overridden in
1384 subclasses to provide a custom ``TestResult``.
1385
1386
Georg Brandlb044b2a2009-09-16 16:05:59 +00001387.. function:: main(module='__main__', defaultTest=None, argv=None, testRunner=TextTestRunner, testLoader=unittest.defaultTestLoader, exit=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001388
1389 A command-line program that runs a set of tests; this is primarily for making
1390 test modules conveniently executable. The simplest use for this function is to
1391 include the following line at the end of a test script::
1392
1393 if __name__ == '__main__':
1394 unittest.main()
1395
1396 The *testRunner* argument can either be a test runner class or an already
Benjamin Peterson25c95f12009-05-08 20:42:26 +00001397 created instance of it. By default ``main`` calls :func:`sys.exit` with
1398 an exit code indicating success or failure of the tests run.
1399
1400 ``main`` supports being used from the interactive interpreter by passing in the
1401 argument ``exit=False``. This displays the result on standard output without
1402 calling :func:`sys.exit`::
1403
1404 >>> from unittest import main
1405 >>> main(module='test_module', exit=False)
1406
1407 Calling ``main`` actually returns an instance of the ``TestProgram`` class.
1408 This stores the result of the tests run as the ``result`` attribute.
1409
1410 .. versionchanged:: 2.7
1411 The ``exit`` parameter was added.