blob: 3d3727fe947ff85275901d1175320eca5cc54844 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +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])
569
570 Signal a test failure if *expr* is false; the explanation for the error will be
571 *msg* if given, otherwise it will be :const:`None`.
572
573
574.. method:: TestCase.assertEqual(first, second[, msg])
575 TestCase.failUnlessEqual(first, second[, msg])
576
577 Test that *first* and *second* are equal. If the values do not compare equal,
578 the test will fail with the explanation given by *msg*, or :const:`None`. Note
579 that using :meth:`failUnlessEqual` improves upon doing the comparison as the
580 first parameter to :meth:`failUnless`: the default value for *msg* can be
581 computed to include representations of both *first* and *second*.
582
583
584.. method:: TestCase.assertNotEqual(first, second[, msg])
585 TestCase.failIfEqual(first, second[, msg])
586
587 Test that *first* and *second* are not equal. If the values do compare equal,
588 the test will fail with the explanation given by *msg*, or :const:`None`. Note
589 that using :meth:`failIfEqual` improves upon doing the comparison as the first
590 parameter to :meth:`failUnless` is that the default value for *msg* can be
591 computed to include representations of both *first* and *second*.
592
593
594.. method:: TestCase.assertAlmostEqual(first, second[, places[, msg]])
595 TestCase.failUnlessAlmostEqual(first, second[, places[, msg]])
596
597 Test that *first* and *second* are approximately equal by computing the
598 difference, rounding to the given number of *places*, and comparing to zero.
599 Note that comparing a given number of decimal places is not the same as
600 comparing a given number of significant digits. If the values do not compare
601 equal, the test will fail with the explanation given by *msg*, or :const:`None`.
602
603
604.. method:: TestCase.assertNotAlmostEqual(first, second[, places[, msg]])
605 TestCase.failIfAlmostEqual(first, second[, places[, msg]])
606
607 Test that *first* and *second* are not approximately equal by computing the
608 difference, rounding to the given number of *places*, and comparing to zero.
609 Note that comparing a given number of decimal places is not the same as
610 comparing a given number of significant digits. If the values do not compare
611 equal, the test will fail with the explanation given by *msg*, or :const:`None`.
612
613
614.. method:: TestCase.assertRaises(exception, callable, ...)
615 TestCase.failUnlessRaises(exception, callable, ...)
616
617 Test that an exception is raised when *callable* is called with any positional
618 or keyword arguments that are also passed to :meth:`assertRaises`. The test
619 passes if *exception* is raised, is an error if another exception is raised, or
620 fails if no exception is raised. To catch any of a group of exceptions, a tuple
621 containing the exception classes may be passed as *exception*.
622
623
624.. method:: TestCase.failIf(expr[, msg])
625
626 The inverse of the :meth:`failUnless` method is the :meth:`failIf` method. This
627 signals a test failure if *expr* is true, with *msg* or :const:`None` for the
628 error message.
629
630
631.. method:: TestCase.fail([msg])
632
633 Signals a test failure unconditionally, with *msg* or :const:`None` for the
634 error message.
635
636
637.. attribute:: TestCase.failureException
638
639 This class attribute gives the exception raised by the :meth:`test` method. If
640 a test framework needs to use a specialized exception, possibly to carry
641 additional information, it must subclass this exception in order to "play fair"
642 with the framework. The initial value of this attribute is
643 :exc:`AssertionError`.
644
645Testing frameworks can use the following methods to collect information on the
646test:
647
648
649.. method:: TestCase.countTestCases()
650
651 Return the number of tests represented by this test object. For
652 :class:`TestCase` instances, this will always be ``1``.
653
654
655.. method:: TestCase.defaultTestResult()
656
657 Return an instance of the test result class that should be used for this test
658 case class (if no other result instance is provided to the :meth:`run` method).
659
660 For :class:`TestCase` instances, this will always be an instance of
661 :class:`TestResult`; subclasses of :class:`TestCase` should override this as
662 necessary.
663
664
665.. method:: TestCase.id()
666
667 Return a string identifying the specific test case. This is usually the full
668 name of the test method, including the module and class name.
669
670
671.. method:: TestCase.shortDescription()
672
673 Returns a one-line description of the test, or :const:`None` if no description
674 has been provided. The default implementation of this method returns the first
675 line of the test method's docstring, if available, or :const:`None`.
676
677
678.. _testsuite-objects:
679
680TestSuite Objects
681-----------------
682
683:class:`TestSuite` objects behave much like :class:`TestCase` objects, except
684they do not actually implement a test. Instead, they are used to aggregate
685tests into groups of tests that should be run together. Some additional methods
686are available to add tests to :class:`TestSuite` instances:
687
688
689.. method:: TestSuite.addTest(test)
690
691 Add a :class:`TestCase` or :class:`TestSuite` to the suite.
692
693
694.. method:: TestSuite.addTests(tests)
695
696 Add all the tests from an iterable of :class:`TestCase` and :class:`TestSuite`
697 instances to this test suite.
698
699 This is equivalent to iterating over *tests*, calling :meth:`addTest` for each
700 element.
701
702:class:`TestSuite` shares the following methods with :class:`TestCase`:
703
704
705.. method:: TestSuite.run(result)
706
707 Run the tests associated with this suite, collecting the result into the test
708 result object passed as *result*. Note that unlike :meth:`TestCase.run`,
709 :meth:`TestSuite.run` requires the result object to be passed in.
710
711
712.. method:: TestSuite.debug()
713
714 Run the tests associated with this suite without collecting the result. This
715 allows exceptions raised by the test to be propagated to the caller and can be
716 used to support running tests under a debugger.
717
718
719.. method:: TestSuite.countTestCases()
720
721 Return the number of tests represented by this test object, including all
722 individual tests and sub-suites.
723
724In the typical usage of a :class:`TestSuite` object, the :meth:`run` method is
725invoked by a :class:`TestRunner` rather than by the end-user test harness.
726
727
728.. _testresult-objects:
729
730TestResult Objects
731------------------
732
733A :class:`TestResult` object stores the results of a set of tests. The
734:class:`TestCase` and :class:`TestSuite` classes ensure that results are
735properly recorded; test authors do not need to worry about recording the outcome
736of tests.
737
738Testing frameworks built on top of :mod:`unittest` may want access to the
739:class:`TestResult` object generated by running a set of tests for reporting
740purposes; a :class:`TestResult` instance is returned by the
741:meth:`TestRunner.run` method for this purpose.
742
743:class:`TestResult` instances have the following attributes that will be of
744interest when inspecting the results of running a set of tests:
745
746
747.. attribute:: TestResult.errors
748
749 A list containing 2-tuples of :class:`TestCase` instances and strings holding
750 formatted tracebacks. Each tuple represents a test which raised an unexpected
751 exception.
752
753 .. versionchanged:: 2.2
754 Contains formatted tracebacks instead of :func:`sys.exc_info` results.
755
756
757.. attribute:: TestResult.failures
758
759 A list containing 2-tuples of :class:`TestCase` instances and strings holding
760 formatted tracebacks. Each tuple represents a test where a failure was
761 explicitly signalled using the :meth:`TestCase.fail\*` or
762 :meth:`TestCase.assert\*` methods.
763
764 .. versionchanged:: 2.2
765 Contains formatted tracebacks instead of :func:`sys.exc_info` results.
766
767
768.. attribute:: TestResult.testsRun
769
770 The total number of tests run so far.
771
772
773.. method:: TestResult.wasSuccessful()
774
775 Returns :const:`True` if all tests run so far have passed, otherwise returns
776 :const:`False`.
777
778
779.. method:: TestResult.stop()
780
781 This method can be called to signal that the set of tests being run should be
782 aborted by setting the :class:`TestResult`'s ``shouldStop`` attribute to
783 :const:`True`. :class:`TestRunner` objects should respect this flag and return
784 without running any additional tests.
785
786 For example, this feature is used by the :class:`TextTestRunner` class to stop
787 the test framework when the user signals an interrupt from the keyboard.
788 Interactive tools which provide :class:`TestRunner` implementations can use this
789 in a similar manner.
790
791The following methods of the :class:`TestResult` class are used to maintain the
792internal data structures, and may be extended in subclasses to support
793additional reporting requirements. This is particularly useful in building
794tools which support interactive reporting while tests are being run.
795
796
797.. method:: TestResult.startTest(test)
798
799 Called when the test case *test* is about to be run.
800
801 The default implementation simply increments the instance's ``testsRun``
802 counter.
803
804
805.. method:: TestResult.stopTest(test)
806
807 Called after the test case *test* has been executed, regardless of the outcome.
808
809 The default implementation does nothing.
810
811
812.. method:: TestResult.addError(test, err)
813
814 Called when the test case *test* raises an unexpected exception *err* is a tuple
815 of the form returned by :func:`sys.exc_info`: ``(type, value, traceback)``.
816
817 The default implementation appends ``(test, err)`` to the instance's ``errors``
818 attribute.
819
820
821.. method:: TestResult.addFailure(test, err)
822
823 Called when the test case *test* signals a failure. *err* is a tuple of the form
824 returned by :func:`sys.exc_info`: ``(type, value, traceback)``.
825
826 The default implementation appends ``(test, err)`` to the instance's
827 ``failures`` attribute.
828
829
830.. method:: TestResult.addSuccess(test)
831
832 Called when the test case *test* succeeds.
833
834 The default implementation does nothing.
835
836
837.. _testloader-objects:
838
839TestLoader Objects
840------------------
841
842The :class:`TestLoader` class is used to create test suites from classes and
843modules. Normally, there is no need to create an instance of this class; the
844:mod:`unittest` module provides an instance that can be shared as
845``unittest.defaultTestLoader``. Using a subclass or instance, however, allows
846customization of some configurable properties.
847
848:class:`TestLoader` objects have the following methods:
849
850
851.. method:: TestLoader.loadTestsFromTestCase(testCaseClass)
852
853 Return a suite of all tests cases contained in the :class:`TestCase`\ -derived
854 :class:`testCaseClass`.
855
856
857.. method:: TestLoader.loadTestsFromModule(module)
858
859 Return a suite of all tests cases contained in the given module. This method
860 searches *module* for classes derived from :class:`TestCase` and creates an
861 instance of the class for each test method defined for the class.
862
863 .. warning::
864
865 While using a hierarchy of :class:`TestCase`\ -derived classes can be convenient
866 in sharing fixtures and helper functions, defining test methods on base classes
867 that are not intended to be instantiated directly does not play well with this
868 method. Doing so, however, can be useful when the fixtures are different and
869 defined in subclasses.
870
871
872.. method:: TestLoader.loadTestsFromName(name[, module])
873
874 Return a suite of all tests cases given a string specifier.
875
876 The specifier *name* is a "dotted name" that may resolve either to a module, a
877 test case class, a test method within a test case class, a :class:`TestSuite`
878 instance, or a callable object which returns a :class:`TestCase` or
879 :class:`TestSuite` instance. These checks are applied in the order listed here;
880 that is, a method on a possible test case class will be picked up as "a test
881 method within a test case class", rather than "a callable object".
882
883 For example, if you have a module :mod:`SampleTests` containing a
884 :class:`TestCase`\ -derived class :class:`SampleTestCase` with three test
885 methods (:meth:`test_one`, :meth:`test_two`, and :meth:`test_three`), the
886 specifier ``'SampleTests.SampleTestCase'`` would cause this method to return a
887 suite which will run all three test methods. Using the specifier
888 ``'SampleTests.SampleTestCase.test_two'`` would cause it to return a test suite
889 which will run only the :meth:`test_two` test method. The specifier can refer
890 to modules and packages which have not been imported; they will be imported as a
891 side-effect.
892
893 The method optionally resolves *name* relative to the given *module*.
894
895
896.. method:: TestLoader.loadTestsFromNames(names[, module])
897
898 Similar to :meth:`loadTestsFromName`, but takes a sequence of names rather than
899 a single name. The return value is a test suite which supports all the tests
900 defined for each name.
901
902
903.. method:: TestLoader.getTestCaseNames(testCaseClass)
904
905 Return a sorted sequence of method names found within *testCaseClass*; this
906 should be a subclass of :class:`TestCase`.
907
908The following attributes of a :class:`TestLoader` can be configured either by
909subclassing or assignment on an instance:
910
911
912.. attribute:: TestLoader.testMethodPrefix
913
914 String giving the prefix of method names which will be interpreted as test
915 methods. The default value is ``'test'``.
916
917 This affects :meth:`getTestCaseNames` and all the :meth:`loadTestsFrom\*`
918 methods.
919
920
921.. attribute:: TestLoader.sortTestMethodsUsing
922
923 Function to be used to compare method names when sorting them in
924 :meth:`getTestCaseNames` and all the :meth:`loadTestsFrom\*` methods. The
925 default value is the built-in :func:`cmp` function; the attribute can also be
926 set to :const:`None` to disable the sort.
927
928
929.. attribute:: TestLoader.suiteClass
930
931 Callable object that constructs a test suite from a list of tests. No methods on
932 the resulting object are needed. The default value is the :class:`TestSuite`
933 class.
934
935 This affects all the :meth:`loadTestsFrom\*` methods.
936