blob: 3888904ec875c81b1aa71c6e91a37f1e454cee39 [file] [log] [blame]
Georg Brandl8ec7f652007-08-15 14:28:01 +00001
2:mod:`unittest` --- Unit testing framework
3==========================================
4
5.. module:: unittest
6 :synopsis: Unit testing framework for Python.
7.. moduleauthor:: Steve Purcell <stephen_purcell@yahoo.com>
8.. sectionauthor:: Steve Purcell <stephen_purcell@yahoo.com>
9.. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org>
10.. sectionauthor:: Raymond Hettinger <python@rcn.com>
11
12
13.. versionadded:: 2.1
14
15The 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
52fixtures using :class:`TestCase`, the :meth:`setUp` and :meth:`tearDown` methods
53can be overridden to provide initialization and cleanup for the fixture. With
54:class:`FunctionTestCase`, existing functions can be passed to the constructor
55for these purposes. When the test is run, the fixture initialization is run
56first; if it succeeds, the cleanup method is run after the test has been
57executed, regardless of the outcome of the test. Each instance of the
58:class:`TestCase` will only be used to run a single test method, so a new
59fixture is created for each test.
60
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,
63all tests added directly to the suite and in "child" test suites are run.
64
65A test runner is an object that provides a single method, :meth:`run`, which
66accepts a :class:`TestCase` or :class:`TestSuite` object as a parameter, and
67returns a result object. The class :class:`TestResult` is provided for use as
68the result object. :mod:`unittest` provides the :class:`TextTestRunner` as an
69example test runner which reports test results on the standard error stream by
70default. Alternate runners can be implemented for other environments (such as
71graphical environments) without any need to derive from a specific class.
72
73
74.. seealso::
75
76 Module :mod:`doctest`
77 Another test-support module with a very different flavor.
78
79 `Simple Smalltalk Testing: With Patterns <http://www.XProgramming.com/testfram.htm>`_
80 Kent Beck's original paper on testing frameworks using the pattern shared by
81 :mod:`unittest`.
82
83
84.. _unittest-minimal-example:
85
86Basic example
87-------------
88
89The :mod:`unittest` module provides a rich set of tools for constructing and
90running tests. This section demonstrates that a small subset of the tools
91suffice to meet the needs of most users.
92
93Here is a short script to test three functions from the :mod:`random` module::
94
95 import random
96 import unittest
97
98 class TestSequenceFunctions(unittest.TestCase):
99
100 def setUp(self):
101 self.seq = range(10)
102
103 def testshuffle(self):
104 # make sure the shuffled sequence does not lose any elements
105 random.shuffle(self.seq)
106 self.seq.sort()
107 self.assertEqual(self.seq, range(10))
108
109 def testchoice(self):
110 element = random.choice(self.seq)
111 self.assert_(element in self.seq)
112
113 def testsample(self):
114 self.assertRaises(ValueError, random.sample, self.seq, 20)
115 for element in random.sample(self.seq, 5):
116 self.assert_(element in self.seq)
117
118 if __name__ == '__main__':
119 unittest.main()
120
121A testcase is created by subclassing :class:`unittest.TestCase`. The three
122individual tests are defined with methods whose names start with the letters
123``test``. This naming convention informs the test runner about which methods
124represent tests.
125
126The crux of each test is a call to :meth:`assertEqual` to check for an expected
127result; :meth:`assert_` to verify a condition; or :meth:`assertRaises` to verify
128that an expected exception gets raised. These methods are used instead of the
129:keyword:`assert` statement so the test runner can accumulate all test results
130and produce a report.
131
132When a :meth:`setUp` method is defined, the test runner will run that method
133prior to each test. Likewise, if a :meth:`tearDown` method is defined, the test
134runner will invoke that method after each test. In the example, :meth:`setUp`
135was used to create a fresh sequence for each test.
136
137The final block shows a simple way to run the tests. :func:`unittest.main`
138provides a command line interface to the test script. When run from the command
139line, the above script produces an output that looks like this::
140
141 ...
142 ----------------------------------------------------------------------
143 Ran 3 tests in 0.000s
144
145 OK
146
147Instead of :func:`unittest.main`, there are other ways to run the tests with a
148finer level of control, less terse output, and no requirement to be run from the
149command line. For example, the last two lines may be replaced with::
150
151 suite = unittest.TestLoader().loadTestsFromTestCase(TestSequenceFunctions)
152 unittest.TextTestRunner(verbosity=2).run(suite)
153
154Running the revised script from the interpreter or another script produces the
155following output::
156
157 testchoice (__main__.TestSequenceFunctions) ... ok
158 testsample (__main__.TestSequenceFunctions) ... ok
159 testshuffle (__main__.TestSequenceFunctions) ... ok
160
161 ----------------------------------------------------------------------
162 Ran 3 tests in 0.110s
163
164 OK
165
166The above examples show the most commonly used :mod:`unittest` features which
167are sufficient to meet many everyday testing needs. The remainder of the
168documentation explores the full feature set from first principles.
169
170
171.. _organizing-tests:
172
173Organizing test code
174--------------------
175
176The basic building blocks of unit testing are :dfn:`test cases` --- single
177scenarios that must be set up and checked for correctness. In :mod:`unittest`,
178test cases are represented by instances of :mod:`unittest`'s :class:`TestCase`
179class. To make your own test cases you must write subclasses of
180:class:`TestCase`, or use :class:`FunctionTestCase`.
181
182An instance of a :class:`TestCase`\ -derived class is an object that can
183completely run a single test method, together with optional set-up and tidy-up
184code.
185
186The testing code of a :class:`TestCase` instance should be entirely self
187contained, such that it can be run either in isolation or in arbitrary
188combination with any number of other test cases.
189
190The simplest :class:`TestCase` subclass will simply override the :meth:`runTest`
191method in order to perform specific testing code::
192
193 import unittest
194
195 class DefaultWidgetSizeTestCase(unittest.TestCase):
196 def runTest(self):
197 widget = Widget('The widget')
198 self.assertEqual(widget.size(), (50, 50), 'incorrect default size')
199
200Note that in order to test something, we use the one of the :meth:`assert\*` or
201:meth:`fail\*` methods provided by the :class:`TestCase` base class. If the
202test fails, an exception will be raised, and :mod:`unittest` will identify the
203test case as a :dfn:`failure`. Any other exceptions will be treated as
204:dfn:`errors`. This helps you identify where the problem is: :dfn:`failures` are
205caused by incorrect results - a 5 where you expected a 6. :dfn:`Errors` are
206caused by incorrect code - e.g., a :exc:`TypeError` caused by an incorrect
207function call.
208
209The way to run a test case will be described later. For now, note that to
210construct an instance of such a test case, we call its constructor without
211arguments::
212
213 testCase = DefaultWidgetSizeTestCase()
214
215Now, such test cases can be numerous, and their set-up can be repetitive. In
216the above case, constructing a :class:`Widget` in each of 100 Widget test case
217subclasses would mean unsightly duplication.
218
219Luckily, we can factor out such set-up code by implementing a method called
220:meth:`setUp`, which the testing framework will automatically call for us when
221we run the test::
222
223 import unittest
224
225 class SimpleWidgetTestCase(unittest.TestCase):
226 def setUp(self):
227 self.widget = Widget('The widget')
228
229 class DefaultWidgetSizeTestCase(SimpleWidgetTestCase):
230 def runTest(self):
231 self.failUnless(self.widget.size() == (50,50),
232 'incorrect default size')
233
234 class WidgetResizeTestCase(SimpleWidgetTestCase):
235 def runTest(self):
236 self.widget.resize(100,150)
237 self.failUnless(self.widget.size() == (100,150),
238 'wrong size after resize')
239
240If the :meth:`setUp` method raises an exception while the test is running, the
241framework will consider the test to have suffered an error, and the
242:meth:`runTest` method will not be executed.
243
244Similarly, we can provide a :meth:`tearDown` method that tidies up after the
245:meth:`runTest` method has been run::
246
247 import unittest
248
249 class SimpleWidgetTestCase(unittest.TestCase):
250 def setUp(self):
251 self.widget = Widget('The widget')
252
253 def tearDown(self):
254 self.widget.dispose()
255 self.widget = None
256
257If :meth:`setUp` succeeded, the :meth:`tearDown` method will be run whether
258:meth:`runTest` succeeded or not.
259
260Such a working environment for the testing code is called a :dfn:`fixture`.
261
262Often, many small test cases will use the same fixture. In this case, we would
263end up subclassing :class:`SimpleWidgetTestCase` into many small one-method
264classes such as :class:`DefaultWidgetSizeTestCase`. This is time-consuming and
265
266discouraging, so in the same vein as JUnit, :mod:`unittest` provides a simpler
267mechanism::
268
269 import unittest
270
271 class WidgetTestCase(unittest.TestCase):
272 def setUp(self):
273 self.widget = Widget('The widget')
274
275 def tearDown(self):
276 self.widget.dispose()
277 self.widget = None
278
279 def testDefaultSize(self):
280 self.failUnless(self.widget.size() == (50,50),
281 'incorrect default size')
282
283 def testResize(self):
284 self.widget.resize(100,150)
285 self.failUnless(self.widget.size() == (100,150),
286 'wrong size after resize')
287
288Here we have not provided a :meth:`runTest` method, but have instead provided
289two different test methods. Class instances will now each run one of the
290:meth:`test\*` methods, with ``self.widget`` created and destroyed separately
291for each instance. When creating an instance we must specify the test method it
292is to run. We do this by passing the method name in the constructor::
293
294 defaultSizeTestCase = WidgetTestCase('testDefaultSize')
295 resizeTestCase = WidgetTestCase('testResize')
296
297Test case instances are grouped together according to the features they test.
298:mod:`unittest` provides a mechanism for this: the :dfn:`test suite`,
299represented by :mod:`unittest`'s :class:`TestSuite` class::
300
301 widgetTestSuite = unittest.TestSuite()
302 widgetTestSuite.addTest(WidgetTestCase('testDefaultSize'))
303 widgetTestSuite.addTest(WidgetTestCase('testResize'))
304
305For the ease of running tests, as we will see later, it is a good idea to
306provide in each test module a callable object that returns a pre-built test
307suite::
308
309 def suite():
310 suite = unittest.TestSuite()
311 suite.addTest(WidgetTestCase('testDefaultSize'))
312 suite.addTest(WidgetTestCase('testResize'))
313 return suite
314
315or even::
316
317 def suite():
318 tests = ['testDefaultSize', 'testResize']
319
320 return unittest.TestSuite(map(WidgetTestCase, tests))
321
322Since it is a common pattern to create a :class:`TestCase` subclass with many
323similarly named test functions, :mod:`unittest` provides a :class:`TestLoader`
324class that can be used to automate the process of creating a test suite and
325populating it with individual tests. For example, ::
326
327 suite = unittest.TestLoader().loadTestsFromTestCase(WidgetTestCase)
328
329will create a test suite that will run ``WidgetTestCase.testDefaultSize()`` and
330``WidgetTestCase.testResize``. :class:`TestLoader` uses the ``'test'`` method
331name prefix to identify test methods automatically.
332
333Note that the order in which the various test cases will be run is determined by
334sorting the test function names with the built-in :func:`cmp` function.
335
336Often it is desirable to group suites of test cases together, so as to run tests
337for the whole system at once. This is easy, since :class:`TestSuite` instances
338can be added to a :class:`TestSuite` just as :class:`TestCase` instances can be
339added to a :class:`TestSuite`::
340
341 suite1 = module1.TheTestSuite()
342 suite2 = module2.TheTestSuite()
343 alltests = unittest.TestSuite([suite1, suite2])
344
345You can place the definitions of test cases and test suites in the same modules
346as the code they are to test (such as :file:`widget.py`), but there are several
347advantages to placing the test code in a separate module, such as
348:file:`test_widget.py`:
349
350* The test module can be run standalone from the command line.
351
352* The test code can more easily be separated from shipped code.
353
354* There is less temptation to change test code to fit the code it tests without
355 a good reason.
356
357* Test code should be modified much less frequently than the code it tests.
358
359* Tested code can be refactored more easily.
360
361* Tests for modules written in C must be in separate modules anyway, so why not
362 be consistent?
363
364* If the testing strategy changes, there is no need to change the source code.
365
366
367.. _legacy-unit-tests:
368
369Re-using old test code
370----------------------
371
372Some users will find that they have existing test code that they would like to
373run from :mod:`unittest`, without converting every old test function to a
374:class:`TestCase` subclass.
375
376For this reason, :mod:`unittest` provides a :class:`FunctionTestCase` class.
377This subclass of :class:`TestCase` can be used to wrap an existing test
378function. Set-up and tear-down functions can also be provided.
379
380Given the following test function::
381
382 def testSomething():
383 something = makeSomething()
384 assert something.name is not None
385 # ...
386
387one can create an equivalent test case instance as follows::
388
389 testcase = unittest.FunctionTestCase(testSomething)
390
391If there are additional set-up and tear-down methods that should be called as
392part of the test case's operation, they can also be provided like so::
393
394 testcase = unittest.FunctionTestCase(testSomething,
395 setUp=makeSomethingDB,
396 tearDown=deleteSomethingDB)
397
398To make migrating existing test suites easier, :mod:`unittest` supports tests
399raising :exc:`AssertionError` to indicate test failure. However, it is
400recommended that you use the explicit :meth:`TestCase.fail\*` and
401:meth:`TestCase.assert\*` methods instead, as future versions of :mod:`unittest`
402may treat :exc:`AssertionError` differently.
403
404.. note::
405
406 Even though :class:`FunctionTestCase` can be used to quickly convert an existing
407 test base over to a :mod:`unittest`\ -based system, this approach is not
408 recommended. Taking the time to set up proper :class:`TestCase` subclasses will
409 make future test refactorings infinitely easier.
410
411
412.. _unittest-contents:
413
414Classes and functions
415---------------------
416
417
418.. class:: TestCase([methodName])
419
420 Instances of the :class:`TestCase` class represent the smallest testable units
421 in the :mod:`unittest` universe. This class is intended to be used as a base
422 class, with specific tests being implemented by concrete subclasses. This class
423 implements the interface needed by the test runner to allow it to drive the
424 test, and methods that the test code can use to check for and report various
425 kinds of failure.
426
427 Each instance of :class:`TestCase` will run a single test method: the method
428 named *methodName*. If you remember, we had an earlier example that went
429 something like this::
430
431 def suite():
432 suite = unittest.TestSuite()
433 suite.addTest(WidgetTestCase('testDefaultSize'))
434 suite.addTest(WidgetTestCase('testResize'))
435 return suite
436
437 Here, we create two instances of :class:`WidgetTestCase`, each of which runs a
438 single test.
439
440 *methodName* defaults to ``'runTest'``.
441
442
443.. class:: FunctionTestCase(testFunc[, setUp[, tearDown[, description]]])
444
445 This class implements the portion of the :class:`TestCase` interface which
446 allows the test runner to drive the test, but does not provide the methods which
447 test code can use to check and report errors. This is used to create test cases
448 using legacy test code, allowing it to be integrated into a :mod:`unittest`\
449 -based test framework.
450
451
452.. class:: TestSuite([tests])
453
454 This class represents an aggregation of individual tests cases and test suites.
455 The class presents the interface needed by the test runner to allow it to be run
456 as any other test case. Running a :class:`TestSuite` instance is the same as
457 iterating over the suite, running each test individually.
458
459 If *tests* is given, it must be an iterable of individual test cases or other
460 test suites that will be used to build the suite initially. Additional methods
461 are provided to add test cases and suites to the collection later on.
462
463
464.. class:: TestLoader()
465
466 This class is responsible for loading tests according to various criteria and
467 returning them wrapped in a :class:`TestSuite`. It can load all tests within a
468 given module or :class:`TestCase` subclass.
469
470
471.. class:: TestResult()
472
473 This class is used to compile information about which tests have succeeded and
474 which have failed.
475
476
477.. data:: defaultTestLoader
478
479 Instance of the :class:`TestLoader` class intended to be shared. If no
480 customization of the :class:`TestLoader` is needed, this instance can be used
481 instead of repeatedly creating new instances.
482
483
484.. class:: TextTestRunner([stream[, descriptions[, verbosity]]])
485
486 A basic test runner implementation which prints results on standard error. It
487 has a few configurable parameters, but is essentially very simple. Graphical
488 applications which run test suites should provide alternate implementations.
489
490
491.. function:: main([module[, defaultTest[, argv[, testRunner[, testLoader]]]]])
492
493 A command-line program that runs a set of tests; this is primarily for making
494 test modules conveniently executable. The simplest use for this function is to
495 include the following line at the end of a test script::
496
497 if __name__ == '__main__':
498 unittest.main()
499
500 The *testRunner* argument can either be a test runner class or an already
501 created instance of it.
502
503In some cases, the existing tests may have been written using the :mod:`doctest`
504module. If so, that module provides a :class:`DocTestSuite` class that can
505automatically build :class:`unittest.TestSuite` instances from the existing
506:mod:`doctest`\ -based tests.
507
508.. versionadded:: 2.3
509
510
511.. _testcase-objects:
512
513TestCase Objects
514----------------
515
516Each :class:`TestCase` instance represents a single test, but each concrete
517subclass may be used to define multiple tests --- the concrete class represents
518a single test fixture. The fixture is created and cleaned up for each test
519case.
520
521:class:`TestCase` instances provide three groups of methods: one group used to
522run the test, another used by the test implementation to check conditions and
523report failures, and some inquiry methods allowing information about the test
524itself to be gathered.
525
526Methods in the first group (running the test) are:
527
528
529.. method:: TestCase.setUp()
530
531 Method called to prepare the test fixture. This is called immediately before
532 calling the test method; any exception raised by this method will be considered
533 an error rather than a test failure. The default implementation does nothing.
534
535
536.. method:: TestCase.tearDown()
537
538 Method called immediately after the test method has been called and the result
539 recorded. This is called even if the test method raised an exception, so the
540 implementation in subclasses may need to be particularly careful about checking
541 internal state. Any exception raised by this method will be considered an error
542 rather than a test failure. This method will only be called if the
543 :meth:`setUp` succeeds, regardless of the outcome of the test method. The
544 default implementation does nothing.
545
546
547.. method:: TestCase.run([result])
548
549 Run the test, collecting the result into the test result object passed as
550 *result*. If *result* is omitted or :const:`None`, a temporary result object is
551 created (by calling the :meth:`defaultTestCase` method) and used; this result
552 object is not returned to :meth:`run`'s caller.
553
554 The same effect may be had by simply calling the :class:`TestCase` instance.
555
556
557.. method:: TestCase.debug()
558
559 Run the test without collecting the result. This allows exceptions raised by
560 the test to be propagated to the caller, and can be used to support running
561 tests under a debugger.
562
563The test code can use any of the following methods to check for and report
564failures.
565
566
567.. method:: TestCase.assert_(expr[, msg])
568 TestCase.failUnless(expr[, msg])
Georg Brandlc557db52008-03-09 15:11:39 +0000569 TestCase.assertTrue(expr[, msg])
Georg Brandl8ec7f652007-08-15 14:28:01 +0000570
571 Signal a test failure if *expr* is false; the explanation for the error will be
572 *msg* if given, otherwise it will be :const:`None`.
573
574
575.. method:: TestCase.assertEqual(first, second[, msg])
576 TestCase.failUnlessEqual(first, second[, msg])
577
578 Test that *first* and *second* are equal. If the values do not compare equal,
579 the test will fail with the explanation given by *msg*, or :const:`None`. Note
580 that using :meth:`failUnlessEqual` improves upon doing the comparison as the
581 first parameter to :meth:`failUnless`: the default value for *msg* can be
582 computed to include representations of both *first* and *second*.
583
584
585.. method:: TestCase.assertNotEqual(first, second[, msg])
586 TestCase.failIfEqual(first, second[, msg])
587
588 Test that *first* and *second* are not equal. If the values do compare equal,
589 the test will fail with the explanation given by *msg*, or :const:`None`. Note
590 that using :meth:`failIfEqual` improves upon doing the comparison as the first
591 parameter to :meth:`failUnless` is that the default value for *msg* can be
592 computed to include representations of both *first* and *second*.
593
594
595.. method:: TestCase.assertAlmostEqual(first, second[, places[, msg]])
596 TestCase.failUnlessAlmostEqual(first, second[, places[, msg]])
597
598 Test that *first* and *second* are approximately equal by computing the
599 difference, rounding to the given number of *places*, and comparing to zero.
600 Note that comparing a given number of decimal places is not the same as
601 comparing a given number of significant digits. If the values do not compare
602 equal, the test will fail with the explanation given by *msg*, or :const:`None`.
603
604
605.. method:: TestCase.assertNotAlmostEqual(first, second[, places[, msg]])
606 TestCase.failIfAlmostEqual(first, second[, places[, msg]])
607
608 Test that *first* and *second* are not approximately equal by computing the
609 difference, rounding to the given number of *places*, and comparing to zero.
610 Note that comparing a given number of decimal places is not the same as
611 comparing a given number of significant digits. If the values do not compare
612 equal, the test will fail with the explanation given by *msg*, or :const:`None`.
613
614
615.. method:: TestCase.assertRaises(exception, callable, ...)
616 TestCase.failUnlessRaises(exception, callable, ...)
617
618 Test that an exception is raised when *callable* is called with any positional
619 or keyword arguments that are also passed to :meth:`assertRaises`. The test
620 passes if *exception* is raised, is an error if another exception is raised, or
621 fails if no exception is raised. To catch any of a group of exceptions, a tuple
622 containing the exception classes may be passed as *exception*.
623
624
625.. method:: TestCase.failIf(expr[, msg])
Georg Brandlc557db52008-03-09 15:11:39 +0000626 TestCase.assertFalse(expr[, msg])
Georg Brandl8ec7f652007-08-15 14:28:01 +0000627
628 The inverse of the :meth:`failUnless` method is the :meth:`failIf` method. This
629 signals a test failure if *expr* is true, with *msg* or :const:`None` for the
630 error message.
631
632
633.. method:: TestCase.fail([msg])
634
635 Signals a test failure unconditionally, with *msg* or :const:`None` for the
636 error message.
637
638
639.. attribute:: TestCase.failureException
640
641 This class attribute gives the exception raised by the :meth:`test` method. If
642 a test framework needs to use a specialized exception, possibly to carry
643 additional information, it must subclass this exception in order to "play fair"
644 with the framework. The initial value of this attribute is
645 :exc:`AssertionError`.
646
647Testing frameworks can use the following methods to collect information on the
648test:
649
650
651.. method:: TestCase.countTestCases()
652
653 Return the number of tests represented by this test object. For
654 :class:`TestCase` instances, this will always be ``1``.
655
656
657.. method:: TestCase.defaultTestResult()
658
659 Return an instance of the test result class that should be used for this test
660 case class (if no other result instance is provided to the :meth:`run` method).
661
662 For :class:`TestCase` instances, this will always be an instance of
663 :class:`TestResult`; subclasses of :class:`TestCase` should override this as
664 necessary.
665
666
667.. method:: TestCase.id()
668
669 Return a string identifying the specific test case. This is usually the full
670 name of the test method, including the module and class name.
671
672
673.. method:: TestCase.shortDescription()
674
675 Returns a one-line description of the test, or :const:`None` if no description
676 has been provided. The default implementation of this method returns the first
677 line of the test method's docstring, if available, or :const:`None`.
678
679
680.. _testsuite-objects:
681
682TestSuite Objects
683-----------------
684
685:class:`TestSuite` objects behave much like :class:`TestCase` objects, except
686they do not actually implement a test. Instead, they are used to aggregate
687tests into groups of tests that should be run together. Some additional methods
688are available to add tests to :class:`TestSuite` instances:
689
690
691.. method:: TestSuite.addTest(test)
692
693 Add a :class:`TestCase` or :class:`TestSuite` to the suite.
694
695
696.. method:: TestSuite.addTests(tests)
697
698 Add all the tests from an iterable of :class:`TestCase` and :class:`TestSuite`
699 instances to this test suite.
700
701 This is equivalent to iterating over *tests*, calling :meth:`addTest` for each
702 element.
703
704:class:`TestSuite` shares the following methods with :class:`TestCase`:
705
706
707.. method:: TestSuite.run(result)
708
709 Run the tests associated with this suite, collecting the result into the test
710 result object passed as *result*. Note that unlike :meth:`TestCase.run`,
711 :meth:`TestSuite.run` requires the result object to be passed in.
712
713
714.. method:: TestSuite.debug()
715
716 Run the tests associated with this suite without collecting the result. This
717 allows exceptions raised by the test to be propagated to the caller and can be
718 used to support running tests under a debugger.
719
720
721.. method:: TestSuite.countTestCases()
722
723 Return the number of tests represented by this test object, including all
724 individual tests and sub-suites.
725
726In the typical usage of a :class:`TestSuite` object, the :meth:`run` method is
727invoked by a :class:`TestRunner` rather than by the end-user test harness.
728
729
730.. _testresult-objects:
731
732TestResult Objects
733------------------
734
735A :class:`TestResult` object stores the results of a set of tests. The
736:class:`TestCase` and :class:`TestSuite` classes ensure that results are
737properly recorded; test authors do not need to worry about recording the outcome
738of tests.
739
740Testing frameworks built on top of :mod:`unittest` may want access to the
741:class:`TestResult` object generated by running a set of tests for reporting
742purposes; a :class:`TestResult` instance is returned by the
743:meth:`TestRunner.run` method for this purpose.
744
745:class:`TestResult` instances have the following attributes that will be of
746interest when inspecting the results of running a set of tests:
747
748
749.. attribute:: TestResult.errors
750
751 A list containing 2-tuples of :class:`TestCase` instances and strings holding
752 formatted tracebacks. Each tuple represents a test which raised an unexpected
753 exception.
754
755 .. versionchanged:: 2.2
756 Contains formatted tracebacks instead of :func:`sys.exc_info` results.
757
758
759.. attribute:: TestResult.failures
760
761 A list containing 2-tuples of :class:`TestCase` instances and strings holding
762 formatted tracebacks. Each tuple represents a test where a failure was
763 explicitly signalled using the :meth:`TestCase.fail\*` or
764 :meth:`TestCase.assert\*` methods.
765
766 .. versionchanged:: 2.2
767 Contains formatted tracebacks instead of :func:`sys.exc_info` results.
768
769
770.. attribute:: TestResult.testsRun
771
772 The total number of tests run so far.
773
774
775.. method:: TestResult.wasSuccessful()
776
777 Returns :const:`True` if all tests run so far have passed, otherwise returns
778 :const:`False`.
779
780
781.. method:: TestResult.stop()
782
783 This method can be called to signal that the set of tests being run should be
784 aborted by setting the :class:`TestResult`'s ``shouldStop`` attribute to
785 :const:`True`. :class:`TestRunner` objects should respect this flag and return
786 without running any additional tests.
787
788 For example, this feature is used by the :class:`TextTestRunner` class to stop
789 the test framework when the user signals an interrupt from the keyboard.
790 Interactive tools which provide :class:`TestRunner` implementations can use this
791 in a similar manner.
792
793The following methods of the :class:`TestResult` class are used to maintain the
794internal data structures, and may be extended in subclasses to support
795additional reporting requirements. This is particularly useful in building
796tools which support interactive reporting while tests are being run.
797
798
799.. method:: TestResult.startTest(test)
800
801 Called when the test case *test* is about to be run.
802
803 The default implementation simply increments the instance's ``testsRun``
804 counter.
805
806
807.. method:: TestResult.stopTest(test)
808
809 Called after the test case *test* has been executed, regardless of the outcome.
810
811 The default implementation does nothing.
812
813
814.. method:: TestResult.addError(test, err)
815
816 Called when the test case *test* raises an unexpected exception *err* is a tuple
817 of the form returned by :func:`sys.exc_info`: ``(type, value, traceback)``.
818
Georg Brandl586edab2007-11-24 11:39:13 +0000819 The default implementation appends a tuple ``(test, formatted_err)`` to the
820 instance's ``errors`` attribute, where *formatted_err* is a formatted
821 traceback derived from *err*.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000822
823
824.. method:: TestResult.addFailure(test, err)
825
826 Called when the test case *test* signals a failure. *err* is a tuple of the form
827 returned by :func:`sys.exc_info`: ``(type, value, traceback)``.
828
Georg Brandl586edab2007-11-24 11:39:13 +0000829 The default implementation appends a tuple ``(test, formatted_err)`` to the
830 instance's ``failures`` attribute, where *formatted_err* is a formatted
831 traceback derived from *err*.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000832
833
834.. method:: TestResult.addSuccess(test)
835
836 Called when the test case *test* succeeds.
837
838 The default implementation does nothing.
839
840
841.. _testloader-objects:
842
843TestLoader Objects
844------------------
845
846The :class:`TestLoader` class is used to create test suites from classes and
847modules. Normally, there is no need to create an instance of this class; the
848:mod:`unittest` module provides an instance that can be shared as
849``unittest.defaultTestLoader``. Using a subclass or instance, however, allows
850customization of some configurable properties.
851
852:class:`TestLoader` objects have the following methods:
853
854
855.. method:: TestLoader.loadTestsFromTestCase(testCaseClass)
856
857 Return a suite of all tests cases contained in the :class:`TestCase`\ -derived
858 :class:`testCaseClass`.
859
860
861.. method:: TestLoader.loadTestsFromModule(module)
862
863 Return a suite of all tests cases contained in the given module. This method
864 searches *module* for classes derived from :class:`TestCase` and creates an
865 instance of the class for each test method defined for the class.
866
867 .. warning::
868
869 While using a hierarchy of :class:`TestCase`\ -derived classes can be convenient
870 in sharing fixtures and helper functions, defining test methods on base classes
871 that are not intended to be instantiated directly does not play well with this
872 method. Doing so, however, can be useful when the fixtures are different and
873 defined in subclasses.
874
875
876.. method:: TestLoader.loadTestsFromName(name[, module])
877
878 Return a suite of all tests cases given a string specifier.
879
880 The specifier *name* is a "dotted name" that may resolve either to a module, a
881 test case class, a test method within a test case class, a :class:`TestSuite`
882 instance, or a callable object which returns a :class:`TestCase` or
883 :class:`TestSuite` instance. These checks are applied in the order listed here;
884 that is, a method on a possible test case class will be picked up as "a test
885 method within a test case class", rather than "a callable object".
886
887 For example, if you have a module :mod:`SampleTests` containing a
888 :class:`TestCase`\ -derived class :class:`SampleTestCase` with three test
889 methods (:meth:`test_one`, :meth:`test_two`, and :meth:`test_three`), the
890 specifier ``'SampleTests.SampleTestCase'`` would cause this method to return a
891 suite which will run all three test methods. Using the specifier
892 ``'SampleTests.SampleTestCase.test_two'`` would cause it to return a test suite
893 which will run only the :meth:`test_two` test method. The specifier can refer
894 to modules and packages which have not been imported; they will be imported as a
895 side-effect.
896
897 The method optionally resolves *name* relative to the given *module*.
898
899
900.. method:: TestLoader.loadTestsFromNames(names[, module])
901
902 Similar to :meth:`loadTestsFromName`, but takes a sequence of names rather than
903 a single name. The return value is a test suite which supports all the tests
904 defined for each name.
905
906
907.. method:: TestLoader.getTestCaseNames(testCaseClass)
908
909 Return a sorted sequence of method names found within *testCaseClass*; this
910 should be a subclass of :class:`TestCase`.
911
912The following attributes of a :class:`TestLoader` can be configured either by
913subclassing or assignment on an instance:
914
915
916.. attribute:: TestLoader.testMethodPrefix
917
918 String giving the prefix of method names which will be interpreted as test
919 methods. The default value is ``'test'``.
920
921 This affects :meth:`getTestCaseNames` and all the :meth:`loadTestsFrom\*`
922 methods.
923
924
925.. attribute:: TestLoader.sortTestMethodsUsing
926
927 Function to be used to compare method names when sorting them in
928 :meth:`getTestCaseNames` and all the :meth:`loadTestsFrom\*` methods. The
929 default value is the built-in :func:`cmp` function; the attribute can also be
930 set to :const:`None` to disable the sort.
931
932
933.. attribute:: TestLoader.suiteClass
934
935 Callable object that constructs a test suite from a list of tests. No methods on
936 the resulting object are needed. The default value is the :class:`TestSuite`
937 class.
938
939 This affects all the :meth:`loadTestsFrom\*` methods.
940