blob: 06d76af4ea63b7ee4b63b464052dfd623934adbd [file] [log] [blame]
Fred Drakeb9ad2282001-04-07 05:41:39 +00001\section{\module{unittest} ---
2 Unit testing framework}
3
4\declaremodule{standard}{unittest}
Fred Drake62a26692001-04-12 19:34:38 +00005\modulesynopsis{Unit testing framework for Python.}
Fred Drakeb9ad2282001-04-07 05:41:39 +00006\moduleauthor{Steve Purcell}{stephen\textunderscore{}purcell@yahoo.com}
7\sectionauthor{Steve Purcell}{stephen\textunderscore{}purcell@yahoo.com}
8\sectionauthor{Fred L. Drake, Jr.}{fdrake@acm.org}
9
10
11The Python unit testing framework, often referred to as ``PyUnit,'' is
12a Python language version of JUnit, by Kent Beck and Erich Gamma.
13JUnit is, in turn, a Java version of Kent's Smalltalk testing
14framework. Each is the de facto standard unit testing framework for
15its respective language.
16
17PyUnit supports test automation, sharing of setup and shutdown code
18for tests, aggregation of tests into collections, and independence of
19the tests from the reporting framework. The \module{unittest} module
20provides classes that make it easy to support these qualities for a
21set of tests.
22
Fred Drake62a26692001-04-12 19:34:38 +000023To achieve this, PyUnit supports some important concepts:
Fred Drakeb9ad2282001-04-07 05:41:39 +000024
25\begin{definitions}
Fred Drake29be7012001-04-10 22:25:06 +000026\term{test fixture}
27A \dfn{test fixture} represents the preparation needed to perform one
28or more tests, and any associate cleanup actions. This may involve,
29for example, creating temporary or proxy databases, directories, or
30starting a server process.
31
Fred Drakeb9ad2282001-04-07 05:41:39 +000032\term{test case}
33A \dfn{test case} is the smallest unit of testing. It checks for a
34specific response to a particular set of inputs. PyUnit provides a
35base class, \class{TestCase}, which may be used to create new test
36cases.
37
38\term{test suite}
39A \dfn{test suite} is a collection of test cases, test suites, or
40both. It is used to aggregate tests that should be executed
41together.
42
43\term{test runner}
44A \dfn{test runner} is a component which orchestrates the execution of
45tests and provides the outcome to the user. The runner may use a
46graphical interface, a textual interface, or return a special value to
47indicate the results of executing the tests.
48\end{definitions}
49
50
Fred Drake62a26692001-04-12 19:34:38 +000051The test case and test fixture concepts are supported through the
52\class{TestCase} and \class{FunctionTestCase} classes; the former
53should be used when creating new tests, and the later can be used when
54integrating existing test code with a PyUnit-driven framework. When
55building test fixtures using \class{TestCase}, the \method{setUp()}
56and \method{tearDown()} methods can be overridden to provide
57initialization and cleanup for the fixture. With
58\class{FunctionTestCase}, existing functions can be passed to the
59constructor for these purposes. When the test is run, the
60fixture initialization is run first; if it succeeds, the cleanup
61method is run after the test has been executed, regardless of the
62outcome of the test. Each instance of the \class{TestCase} will only
63be used to run a single test method, so a new fixture is created for
64each test.
65
66Test suites are implemented by the \class{TestSuite} class. This
67class allows individual tests and test suites to be aggregated; when
68the suite is executed, all tests added directly to the suite and in
69``child'' test suites are run.
70
71A test runner is an object that provides a single method,
72\method{run()}, which accepts a \class{TestCase} or \class{TestSuite}
73object as a parameter, and returns a result object. The class
74\class{TestResult} is provided for use as the result object. PyUnit
75provide the \class{TextTestRunner} as an example test runner which
76reports test results on the standard error stream by default.
77Alternate runners can be implemented for other environments (such as
78graphical environments) without any need to derive from a specific
79class.
80
Fred Drakeb9ad2282001-04-07 05:41:39 +000081
82\begin{seealso}
83 \seetitle[http://pyunit.sourceforge.net/]{PyUnit Web Site}{The
84 source for further information on PyUnit.}
85 \seetitle[http://www.XProgramming.com/testfram.htm]{Simple Smalltalk
86 Testing: With Patterns}{Kent Beck's original paper on
87 testing frameworks using the pattern shared by
88 \module{unittest}.}
89\end{seealso}
90
91
Fred Drakeb9ad2282001-04-07 05:41:39 +000092\subsection{Organizing test code
93 \label{organizing-tests}}
94
Fred Drake0056a422001-04-12 04:50:06 +000095The basic building blocks of unit testing are \dfn{test cases} ---
96single scenarios that must be set up and checked for correctness. In
97PyUnit, test cases are represented by instances of the
98\class{TestCase} class in the \refmodule{unittest} module. To make
99your own test cases you must write subclasses of \class{TestCase}, or
100use \class{FunctionTestCase}.
101
102An instance of a \class{TestCase}-derived class is an object that can
103completely run a single test method, together with optional set-up
104and tidy-up code.
105
106The testing code of a \class{TestCase} instance should be entirely
107self contained, such that it can be run either in isolation or in
108arbitrary combination with any number of other test cases.
109
110The simplest test case subclass will simply override the
111\method{runTest()} method in order to perform specific testing code:
112
113\begin{verbatim}
114import unittest
115
116class DefaultWidgetSizeTestCase(unittest.TestCase):
117 def runTest(self):
118 widget = Widget("The widget")
Fred Drake62a26692001-04-12 19:34:38 +0000119 self.failUnless(widget.size() == (50,50), 'incorrect default size')
Fred Drake0056a422001-04-12 04:50:06 +0000120\end{verbatim}
121
Fred Drake62a26692001-04-12 19:34:38 +0000122Note that in order to test something, we use the one of the
123\method{assert*()} or \method{fail*()} methods provided by the
124\class{TestCase} base class. If the test fails when the test case
125runs, an exception will be raised, and the testing framework will
126identify the test case as a \dfn{failure}. Other exceptions that do
127not arise from checks made through the \method{assert*()} and
128\method{fail*()} methods are identified by the testing framework as
129dfn{errors}.
Fred Drake0056a422001-04-12 04:50:06 +0000130
131The way to run a test case will be described later. For now, note
132that to construct an instance of such a test case, we call its
133constructor without arguments:
134
135\begin{verbatim}
136testCase = DefaultWidgetSizeTestCase()
137\end{verbatim}
138
139Now, such test cases can be numerous, and their set-up can be
140repetitive. In the above case, constructing a ``Widget'' in each of
141100 Widget test case subclasses would mean unsightly duplication.
142
143Luckily, we can factor out such set-up code by implementing a method
144called \method{setUp()}, which the testing framework will
145automatically call for us when we run the test:
146
147\begin{verbatim}
148import unittest
149
150class SimpleWidgetTestCase(unittest.TestCase):
151 def setUp(self):
152 self.widget = Widget("The widget")
153
154class DefaultWidgetSizeTestCase(SimpleWidgetTestCase):
155 def runTest(self):
Fred Drake62a26692001-04-12 19:34:38 +0000156 self.failUnless(self.widget.size() == (50,50),
157 'incorrect default size')
Fred Drake0056a422001-04-12 04:50:06 +0000158
159class WidgetResizeTestCase(SimpleWidgetTestCase):
160 def runTest(self):
161 self.widget.resize(100,150)
Fred Drake62a26692001-04-12 19:34:38 +0000162 self.failUnless(self.widget.size() == (100,150),
163 'wrong size after resize')
Fred Drake0056a422001-04-12 04:50:06 +0000164\end{verbatim}
165
166If the \method{setUp()} method raises an exception while the test is
167running, the framework will consider the test to have suffered an
168error, and the \method{runTest()} method will not be executed.
169
170Similarly, we can provide a \method{tearDown()} method that tidies up
171after the \method{runTest()} method has been run:
172
173\begin{verbatim}
174import unittest
175
176class SimpleWidgetTestCase(unittest.TestCase):
177 def setUp(self):
178 self.widget = Widget("The widget")
179
180 def tearDown(self):
181 self.widget.dispose()
182 self.widget = None
183\end{verbatim}
184
185If \method{setUp()} succeeded, the \method{tearDown()} method will be
186run regardless of whether or not \method{runTest()} succeeded.
187
188Such a working environment for the testing code is called a
189\dfn{fixture}.
190
191Often, many small test cases will use the same fixture. In this case,
192we would end up subclassing \class{SimpleWidgetTestCase} into many
193small one-method classes such as
194\class{DefaultWidgetSizeTestCase}. This is time-consuming and
195discouraging, so in the same vein as JUnit, PyUnit provides a simpler
196mechanism:
197
198\begin{verbatim}
199import unittest
200
201class WidgetTestCase(unittest.TestCase):
202 def setUp(self):
203 self.widget = Widget("The widget")
204
205 def tearDown(self):
206 self.widget.dispose()
207 self.widget = None
208
209 def testDefaultSize(self):
Fred Drake62a26692001-04-12 19:34:38 +0000210 self.failUnless(self.widget.size() == (50,50),
211 'incorrect default size')
Fred Drake0056a422001-04-12 04:50:06 +0000212
213 def testResize(self):
214 self.widget.resize(100,150)
Fred Drake62a26692001-04-12 19:34:38 +0000215 self.failUnless(self.widget.size() == (100,150),
216 'wrong size after resize')
Fred Drake0056a422001-04-12 04:50:06 +0000217\end{verbatim}
218
219Here we have not provided a \method{runTest()} method, but have
220instead provided two different test methods. Class instances will now
221each run one of the \method{test*()} methods, with \code{self.widget}
222created and destroyed separately for each instance. When creating an
223instance we must specify the test method it is to run. We do this by
224passing the method name in the constructor:
225
226\begin{verbatim}
227defaultSizeTestCase = WidgetTestCase("testDefaultSize")
228resizeTestCase = WidgetTestCase("testResize")
229\end{verbatim}
230
231Test case instances are grouped together according to the features
232they test. PyUnit provides a mechanism for this: the \class{test
233suite}, represented by the class \class{TestSuite} in the
234\refmodule{unittest} module:
235
236\begin{verbatim}
237widgetTestSuite = unittest.TestSuite()
238widgetTestSuite.addTest(WidgetTestCase("testDefaultSize"))
239widgetTestSuite.addTest(WidgetTestCase("testResize"))
240\end{verbatim}
241
242For the ease of running tests, as we will see later, it is a good
243idea to provide in each test module a callable object that returns a
244pre-built test suite:
245
246\begin{verbatim}
247def suite():
248 suite = unittest.TestSuite()
249 suite.addTest(WidgetTestCase("testDefaultSize"))
250 suite.addTest(WidgetTestCase("testResize"))
251 return suite
252\end{verbatim}
253
254or even:
255
256\begin{verbatim}
257class WidgetTestSuite(unittest.TestSuite):
258 def __init__(self):
259 unittest.TestSuite.__init__(self,map(WidgetTestCase,
260 ("testDefaultSize",
261 "testResize")))
262\end{verbatim}
263
264(The latter is admittedly not for the faint-hearted!)
265
266Since it is a common pattern to create a \class{TestCase} subclass
267with many similarly named test functions, there is a convenience
268function called \function{makeSuite()} provided in the
269\refmodule{unittest} module that constructs a test suite that
270comprises all of the test cases in a test case class:
271
272\begin{verbatim}
273suite = unittest.makeSuite(WidgetTestCase,'test')
274\end{verbatim}
275
276Note that when using the \function{makeSuite()} function, the order in
277which the various test cases will be run by the test suite is the
278order determined by sorting the test function names using the
279\function{cmp()} built-in function.
280
281Often it is desirable to group suites of test cases together, so as to
282run tests for the whole system at once. This is easy, since
283\class{TestSuite} instances can be added to a \class{TestSuite} just
284as \class{TestCase} instances can be added to a \class{TestSuite}:
285
286\begin{verbatim}
287suite1 = module1.TheTestSuite()
288suite2 = module2.TheTestSuite()
289alltests = unittest.TestSuite((suite1, suite2))
290\end{verbatim}
291
292You can place the definitions of test cases and test suites in the
293same modules as the code they are to test (e.g.\ \file{widget.py}),
294but there are several advantages to placing the test code in a
295separate module, such as \file{widgettests.py}:
296
297\begin{itemize}
298 \item The test module can be run standalone from the command line.
299 \item The test code can more easily be separated from shipped code.
300 \item There is less temptation to change test code to fit the code.
301 it tests without a good reason.
302 \item Test code should be modified much less frequently than the
303 code it tests.
304 \item Tested code can be refactored more easily.
305 \item Tests for modules written in C must be in separate modules
306 anyway, so why not be consistent?
307 \item If the testing strategy changes, there is no need to change
308 the source code.
309\end{itemize}
310
Fred Drakeb9ad2282001-04-07 05:41:39 +0000311
312\subsection{Re-using old test code
313 \label{legacy-unit-tests}}
314
315Some users will find that they have existing test code that they would
316like to run from PyUnit, without converting every old test function to
317a \class{TestCase} subclass.
318
319For this reason, PyUnit provides a \class{FunctionTestCase} class.
320This subclass of \class{TestCase} can be used to wrap an existing test
321function. Set-up and tear-down functions can also optionally be
322wrapped.
323
324Given the following test function:
325
326\begin{verbatim}
327def testSomething():
328 something = makeSomething()
329 assert something.name is not None
330 # ...
331\end{verbatim}
332
333one can create an equivalent test case instance as follows:
334
335\begin{verbatim}
336testcase = unittest.FunctionTestCase(testSomething)
337\end{verbatim}
338
339If there are additional set-up and tear-down methods that should be
340called as part of the test case's operation, they can also be provided:
341
342\begin{verbatim}
343testcase = unittest.FunctionTestCase(testSomething,
344 setUp=makeSomethingDB,
345 tearDown=deleteSomethingDB)
346\end{verbatim}
347
Fred Drake0aa811c2001-10-20 04:24:09 +0000348\note{PyUnit supports the use of \exception{AssertionError}
Fred Drake0056a422001-04-12 04:50:06 +0000349as an indicator of test failure, but does not recommend it. Future
Fred Drake0aa811c2001-10-20 04:24:09 +0000350versions may treat \exception{AssertionError} differently.}
Fred Drake0056a422001-04-12 04:50:06 +0000351
352
Fred Drakeb9ad2282001-04-07 05:41:39 +0000353\subsection{Classes and functions
354 \label{unittest-contents}}
355
356\begin{classdesc}{TestCase}{}
357 Instances of the \class{TestCase} class represent the smallest
358 testable units in a set of tests. This class is intended to be used
359 as a base class, with specific tests being implemented by concrete
360 subclasses. This class implements the interface needed by the test
361 runner to allow it to drive the test, and methods that the test code
362 can use to check for and report various kinds of failures.
363\end{classdesc}
364
365\begin{classdesc}{FunctionTestCase}{testFunc\optional{,
Fred Drake62a26692001-04-12 19:34:38 +0000366 setUp\optional{, tearDown\optional{, description}}}}
Fred Drakeb9ad2282001-04-07 05:41:39 +0000367 This class implements the portion of the \class{TestCase} interface
368 which allows the test runner to drive the test, but does not provide
369 the methods which test code can use to check and report errors.
370 This is used to create test cases using legacy test code, allowing
371 it to be integrated into a \refmodule{unittest}-based test
372 framework.
373\end{classdesc}
374
Fred Drake29be7012001-04-10 22:25:06 +0000375\begin{classdesc}{TestSuite}{\optional{tests}}
Fred Drakeb9ad2282001-04-07 05:41:39 +0000376 This class represents an aggregation of individual tests cases and
377 test suites. The class presents the interface needed by the test
378 runner to allow it to be run as any other test case, but all the
379 contained tests and test suites are executed. Additional methods
Fred Drake29be7012001-04-10 22:25:06 +0000380 are provided to add test cases and suites to the aggregation. If
381 \var{tests} is given, it must be a sequence of individual tests that
382 will be added to the suite.
Fred Drakeb9ad2282001-04-07 05:41:39 +0000383\end{classdesc}
384
385\begin{classdesc}{TestLoader}{}
Fred Drake29be7012001-04-10 22:25:06 +0000386 This class is responsible for loading tests according to various
387 criteria and returning them wrapped in a \class{TestSuite}.
388 It can load all tests within a given module or \class{TestCase}
389 class. When loading from a module, it considers all
390 \class{TestCase}-derived classes. For each such class, it creates
391 an instance for each method with a name beginning with the string
392 \samp{test}.
Fred Drakeb9ad2282001-04-07 05:41:39 +0000393\end{classdesc}
394
Fred Drake62a26692001-04-12 19:34:38 +0000395\begin{datadesc}{defaultTestLoader}
396 Instance of the \class{TestLoader} class which can be shared. If no
397 customization of the \class{TestLoader} is needed, this instance can
398 always be used instead of creating new instances.
399\end{datadesc}
400
Fred Drakeb9ad2282001-04-07 05:41:39 +0000401\begin{classdesc}{TextTestRunner}{\optional{stream\optional{,
402 descriptions\optional{, verbosity}}}}
Fred Drake29be7012001-04-10 22:25:06 +0000403 A basic test runner implementation which prints results on standard
404 output. It has a few configurable parameters, but is essentially
405 very simple. Graphical applications which run test suites should
406 provide alternate implementations.
Fred Drakeb9ad2282001-04-07 05:41:39 +0000407\end{classdesc}
408
409\begin{funcdesc}{main}{\optional{module\optional{,
410 defaultTest\optional{, argv\optional{,
411 testRunner\optional{, testRunner}}}}}}
Fred Drake0056a422001-04-12 04:50:06 +0000412 A command-line program that runs a set of tests; this is primarily
413 for making test modules conveniently executable. The simplest use
414 for this function is:
Fred Drakeb9ad2282001-04-07 05:41:39 +0000415
416\begin{verbatim}
417if __name__ == '__main__':
418 unittest.main()
419\end{verbatim}
420\end{funcdesc}
421
422
423\subsection{TestCase Objects
424 \label{testcase-objects}}
425
Fred Drake29be7012001-04-10 22:25:06 +0000426Each \class{TestCase} instance represents a single test, but each
427concrete subclass may be used to define multiple tests --- the
428concrete class represents a single test fixture. The fixture is
429created and cleaned up for each test case.
430
431\class{TestCase} instances provide three groups of methods: one group
432used to run the test, another used by the test implementation to
433check conditions and report failures, and some inquiry methods
434allowing information about the test itself to be gathered.
435
436Methods in the first group are:
437
438\begin{methoddesc}[TestCase]{setUp}{}
439 Method called to prepare the test fixture. This is called
440 immediately before calling the test method; any exception raised by
441 this method will be considered an error rather than a test failure.
442 The default implementation does nothing.
443\end{methoddesc}
444
Fred Drake29be7012001-04-10 22:25:06 +0000445\begin{methoddesc}[TestCase]{tearDown}{}
446 Method called immediately after the test method has been called and
447 the result recorded. This is called even if the test method raised
448 an exception, so the implementation in subclasses may need to be
449 particularly careful about checking internal state. Any exception
450 raised by this method will be considered an error rather than a test
Fred Drake62a26692001-04-12 19:34:38 +0000451 failure. This method will only be called if the \method{setUp()}
452 succeeds, regardless of the outcome of the test method.
453 The default implementation does nothing.
454\end{methoddesc}
455
456\begin{methoddesc}[TestCase]{run}{\optional{result}}
457 Run the test, collecting the result into the test result object
458 passed as \var{result}. If \var{result} is omitted or \code{None},
459 a temporary result object is created and used, but is not made
460 available to the caller. This is equivalent to simply calling the
461 \class{TestCase} instance.
Fred Drake29be7012001-04-10 22:25:06 +0000462\end{methoddesc}
463
464\begin{methoddesc}[TestCase]{debug}{}
465 Run the test without collecting the result. This allows exceptions
466 raised by the test to be propogated to the caller, and can be used
467 to support running tests under a debugger.
468\end{methoddesc}
469
470
Fred Drake0056a422001-04-12 04:50:06 +0000471The test code can use any of the following methods to check for and
Fred Drake62a26692001-04-12 19:34:38 +0000472report failures.
Fred Drake29be7012001-04-10 22:25:06 +0000473
Fred Drake62a26692001-04-12 19:34:38 +0000474\begin{methoddesc}[TestCase]{assert_}{expr\optional{, msg}}
475\methodline{failUnless}{expr\optional{, msg}}
476 Signal a test failure if \var{expr} is false; the explanation for
477 the error will be \var{msg} if given, otherwise it will be
478 \code{None}.
Fred Drake29be7012001-04-10 22:25:06 +0000479\end{methoddesc}
480
Fred Drake62a26692001-04-12 19:34:38 +0000481\begin{methoddesc}[TestCase]{assertEqual}{first, second\optional{, msg}}
482\methodline{failUnlessEqual}{first, second\optional{, msg}}
Fred Drake29be7012001-04-10 22:25:06 +0000483 Test that \var{first} and \var{second} are equal. If the values do
484 not compare equal, the test will fail with the explanation given by
Fred Drake0056a422001-04-12 04:50:06 +0000485 \var{msg}, or \code{None}. Note that using \method{failUnlessEqual()}
Fred Drake29be7012001-04-10 22:25:06 +0000486 improves upon doing the comparison as the first parameter to
Fred Drake62a26692001-04-12 19:34:38 +0000487 \method{failUnless()}: the default value for \var{msg} can be
Fred Drake29be7012001-04-10 22:25:06 +0000488 computed to include representations of both \var{first} and
489 \var{second}.
490\end{methoddesc}
491
Fred Drake62a26692001-04-12 19:34:38 +0000492\begin{methoddesc}[TestCase]{assertNotEqual}{first, second\optional{, msg}}
493\methodline{failIfEqual}{first, second\optional{, msg}}
Fred Drake29be7012001-04-10 22:25:06 +0000494 Test that \var{first} and \var{second} are not equal. If the values
495 do compare equal, the test will fail with the explanation given by
Fred Drake0056a422001-04-12 04:50:06 +0000496 \var{msg}, or \code{None}. Note that using \method{failIfEqual()}
Fred Drake29be7012001-04-10 22:25:06 +0000497 improves upon doing the comparison as the first parameter to
498 \method{failUnless()} is that the default value for \var{msg} can be
499 computed to include representations of both \var{first} and
500 \var{second}.
501\end{methoddesc}
502
Fred Drake62a26692001-04-12 19:34:38 +0000503\begin{methoddesc}[TestCase]{assertRaises}{exception, callable, \moreargs}
504\methodline{failUnlessRaises}{exception, callable, \moreargs}
505 Test that an exception is raised when \var{callable} is called with
506 any positional or keyword arguments that are also passed to
507 \method{assertRaises()}. The test passes if \var{exception} is
508 raised, is an error if another exception is raised, or fails if no
509 exception is raised. To catch any of a group of exceptions, a tuple
510 containing the exception classes may be passed as \var{exception}.
511\end{methoddesc}
512
Fred Drake29be7012001-04-10 22:25:06 +0000513\begin{methoddesc}[TestCase]{failIf}{expr\optional{, msg}}
Fred Drake0056a422001-04-12 04:50:06 +0000514 The inverse of the \method{failUnless()} method is the
Fred Drake62a26692001-04-12 19:34:38 +0000515 \method{failIf()} method. This signals a test failure if \var{expr}
516 is true, with \var{msg} or \code{None} for the error message.
Fred Drake29be7012001-04-10 22:25:06 +0000517\end{methoddesc}
518
519\begin{methoddesc}[TestCase]{fail}{\optional{msg}}
Fred Drake62a26692001-04-12 19:34:38 +0000520 Signals a test failure unconditionally, with \var{msg} or
521 \code{None} for the error message.
Fred Drake29be7012001-04-10 22:25:06 +0000522\end{methoddesc}
523
Fred Drake62a26692001-04-12 19:34:38 +0000524\begin{memberdesc}[TestCase]{failureException}
525 This class attribute gives the exception raised by the
526 \method{test()} method. If a test framework needs to use a
527 specialized exception, possibly to carry additional information, it
528 must subclass this exception in order to ``play fair'' with the
529 framework. The initial value of this attribute is
530 \exception{AssertionError}.
531\end{memberdesc}
532
Fred Drake29be7012001-04-10 22:25:06 +0000533
534Testing frameworks can use the following methods to collect
535information on the test:
536
537\begin{methoddesc}[TestCase]{countTestCases}{}
538 Return the number of tests represented by the this test object. For
539 \class{TestCase} instances, this will always be \code{1}, but this
540 method is also implemented by the \class{TestSuite} class, which can
541 return larger values.
542\end{methoddesc}
543
544\begin{methoddesc}[TestCase]{defaultTestResult}{}
545 Return the default type of test result object to be used to run this
546 test.
547\end{methoddesc}
548
549\begin{methoddesc}[TestCase]{id}{}
550 Return a string identifying the specific test case. This is usually
551 the full name of the test method, including the module and class
552 names.
553\end{methoddesc}
554
555\begin{methoddesc}[TestCase]{shortDescription}{}
556 Returns a one-line description of the test, or \code{None} if no
557 description has been provided. The default implementation of this
558 method returns the first line of the test method's docstring, if
559 available, or \code{None}.
560\end{methoddesc}
561
Fred Drakeb9ad2282001-04-07 05:41:39 +0000562
563\subsection{TestSuite Objects
564 \label{testsuite-objects}}
565
566\class{TestSuite} objects behave much like \class{TestCase} objects,
567except they do not actually implement a test. Instead, they are used
568to aggregate tests into groups that should be run together. Some
569additional methods are available to add tests to \class{TestSuite}
570instances:
571
572\begin{methoddesc}[TestSuite]{addTest}{test}
573 Add a \class{TestCase} or \class{TestSuite} to the set of tests that
574 make up the suite.
575\end{methoddesc}
576
577\begin{methoddesc}[TestSuite]{addTests}{tests}
578 Add all the tests from a sequence of \class{TestCase} and
579 \class{TestSuite} instances to this test suite.
580\end{methoddesc}
581
Fred Drake4d17b302001-09-06 15:51:56 +0000582The \method{run()} method is also slightly different:
583
584\begin{methoddesc}[TestSuite]{run}{result}
585 Run the tests associated with this suite, collecting the result into
586 the test result object passed as \var{result}. Note that unlike
587 \method{TestCase.run()}, \method{TestSuite.run()} requires the
588 result object to be passed in.
589\end{methoddesc}
590
591In the typical usage of a \class{TestSuite} object, the \method{run()}
592method is invoked by a \class{TestRunner} rather than by the end-user
593test harness.
594
Fred Drakeb9ad2282001-04-07 05:41:39 +0000595
596\subsection{TestResult Objects
597 \label{testresult-objects}}
598
599A \class{TestResult} object stores the results of a set of tests. The
600\class{TestCase} and \class{TestSuite} classes ensure that results are
601properly stored; test authors do not need to worry about recording the
602outcome of tests.
603
604Testing frameworks built on top of \refmodule{unittest} may want
605access to the \class{TestResult} object generated by running a set of
606tests for reporting purposes; a \class{TestResult} instance is
607returned by the \method{TestRunner.run()} method for this purpose.
608
609Each instance holds the total number of tests run, and collections of
610failures and errors that occurred among those test runs. The
611collections contain tuples of \code{(\var{testcase},
612\var{exceptioninfo})}, where \var{exceptioninfo} is a tuple as
613returned by \function{sys.exc_info()}.
614
615\class{TestResult} instances have the following attributes that will
616be of interest when inspecting the results of running a set of tests:
617
618\begin{memberdesc}[TestResult]{errors}
619 A list containing pairs of \class{TestCase} instances and the
Fred Drake62a26692001-04-12 19:34:38 +0000620 \function{sys.exc_info()} results for tests which raised an
621 exception but did not signal a test failure.
Fred Drakeb9ad2282001-04-07 05:41:39 +0000622\end{memberdesc}
623
624\begin{memberdesc}[TestResult]{failures}
625 A list containing pairs of \class{TestCase} instances and the
Fred Drake62a26692001-04-12 19:34:38 +0000626 \function{sys.exc_info()} results for tests which signalled a
627 failure in the code under test.
Fred Drakeb9ad2282001-04-07 05:41:39 +0000628\end{memberdesc}
629
630\begin{memberdesc}[TestResult]{testsRun}
631 The number of tests which have been started.
632\end{memberdesc}
633
634\begin{methoddesc}[TestResult]{wasSuccessful}{}
635 Returns true if all tests run so far have passed, otherwise returns
636 false.
637\end{methoddesc}
638
639
640The following methods of the \class{TestResult} class are used to
641maintain the internal data structures, and mmay be extended in
642subclasses to support additional reporting requirements. This is
Fred Drake8ee679f2001-07-14 02:50:55 +0000643particularly useful in building tools which support interactive
Fred Drakeb9ad2282001-04-07 05:41:39 +0000644reporting while tests are being run.
645
646\begin{methoddesc}[TestResult]{startTest}{test}
647 Called when the test case \var{test} is about to be run.
648\end{methoddesc}
649
650\begin{methoddesc}[TestResult]{stopTest}{test}
651 Called when the test case \var{test} has been executed, regardless
652 of the outcome.
653\end{methoddesc}
654
655\begin{methoddesc}[TestResult]{addError}{test, err}
Fred Drake62a26692001-04-12 19:34:38 +0000656 Called when the test case \var{test} raises an exception without
657 signalling a test failure. \var{err} is a tuple of the form
658 returned by \function{sys.exc_info()}: \code{(\var{type},
659 \var{value}, \var{traceback})}.
Fred Drakeb9ad2282001-04-07 05:41:39 +0000660\end{methoddesc}
661
662\begin{methoddesc}[TestResult]{addFailure}{test, err}
Fred Drake62a26692001-04-12 19:34:38 +0000663 Called when the test case \var{test} signals a failure.
Fred Drake0056a422001-04-12 04:50:06 +0000664 \var{err} is a tuple of the form returned by
665 \function{sys.exc_info()}: \code{(\var{type}, \var{value},
666 \var{traceback})}.
Fred Drakeb9ad2282001-04-07 05:41:39 +0000667\end{methoddesc}
668
669\begin{methoddesc}[TestResult]{addSuccess}{test}
670 This method is called for a test that does not fail; \var{test} is
671 the test case object.
672\end{methoddesc}
673
674
675One additional method is available for \class{TestResult} objects:
676
677\begin{methoddesc}[TestResult]{stop}{}
678 This method can be called to signal that the set of tests being run
679 should be aborted. Once this has been called, the
680 \class{TestRunner} object return to its caller without running any
681 additional tests. This is used by the \class{TextTestRunner} class
682 to stop the test framework when the user signals an interrupt from
Fred Drake8ee679f2001-07-14 02:50:55 +0000683 the keyboard. Interactive tools which provide runners can use this
684 in a similar manner.
Fred Drakeb9ad2282001-04-07 05:41:39 +0000685\end{methoddesc}
Fred Drake62a26692001-04-12 19:34:38 +0000686
687
688\subsection{TestLoader Objects
689 \label{testloader-objects}}
690
691The \class{TestLoader} class is used to create test suites from
692classes and modules. Normally, there is no need to create an instance
693of this class; the \refmodule{unittest} module provides an instance
694that can be shared as the \code{defaultTestLoader} module attribute.
695Using a subclass or instance would allow customization of some
696configurable properties.
697
698\class{TestLoader} objects have the following methods:
699
700\begin{methoddesc}[TestLoader]{loadTestsFromTestCase}{testCaseClass}
701 Return a suite of all tests cases contained in the
702 \class{TestCase}-derived class \class{testCaseClass}.
703\end{methoddesc}
704
705\begin{methoddesc}[TestLoader]{loadTestsFromModule}{module}
706 Return a suite of all tests cases contained in the given module.
707 This method searches \var{module} for classes derived from
708 \class{TestCase} and creates an instance of the class for each test
709 method defined for the class.
710
Fred Drake0aa811c2001-10-20 04:24:09 +0000711 \warning{While using a hierarchy of
Fred Drake62a26692001-04-12 19:34:38 +0000712 \class{Testcase}-derived classes can be convenient in sharing
713 fixtures and helper functions, defining test methods on base classes
714 that are not intended to be instantiated directly does not play well
715 with this method. Doing so, however, can be useful when the
Fred Drake0aa811c2001-10-20 04:24:09 +0000716 fixtures are different and defined in subclasses.}
Fred Drake62a26692001-04-12 19:34:38 +0000717\end{methoddesc}
718
719\begin{methoddesc}[TestLoader]{loadTestsFromName}{name\optional{, module}}
720 Return a suite of all tests cases given a string specifier.
721
Fred Drake4d17b302001-09-06 15:51:56 +0000722 The specifier \var{name} is a ``dotted name'' that may resolve
723 either to a module, a test case class, a test method within a test
724 case class, or a callable object which returns a \class{TestCase} or
725 \class{TestSuite} instance. For example, if you have a module
726 \module{SampleTests} containing a \class{TestCase}-derived class
727 \class{SampleTestCase} with three test methods (\method{test_one()},
728 \method{test_two()}, and \method{test_three()}), the specifier
729 \code{'SampleTests.SampleTestCase'} would cause this method to
730 return a suite which will run all three test methods. Using the
731 specifier \code{'SampleTests.SampleTestCase.test_two'} would cause
732 it to return a test suite which will run only the
733 \method{test_two()} test method. The specifier can refer to modules
734 and packages which have not been imported; they will be imported as
735 a side-effect.
Fred Drake62a26692001-04-12 19:34:38 +0000736
737 The method optionally resolves \var{name} relative to a given module.
738\end{methoddesc}
739
740\begin{methoddesc}[TestLoader]{loadTestsFromNames}{names\optional{, module}}
741 Similar to \method{loadTestsFromName()}, but takes a sequence of
742 names rather than a single name. The return value is a test suite
743 which supports all the tests defined for each name.
744\end{methoddesc}
745
746\begin{methoddesc}[TestLoader]{getTestCaseNames}{testCaseClass}
747 Return a sorted sequence of method names found within
748 \var{testCaseClass}.
749\end{methoddesc}
750
751
752The following attributes of a \class{TestLoader} can be configured
753either by subclassing or assignment on an instance:
754
755\begin{memberdesc}[TestLoader]{testMethodPrefix}
756 String giving the prefix of method names which will be interpreted
757 as test methods. The default value is \code{'test'}.
758\end{memberdesc}
759
760\begin{memberdesc}[TestLoader]{sortTestMethodsUsing}
761 Function to be used to compare method names when sorting them in
762 \method{getTestCaseNames()}. The default value is the built-in
763 \function{cmp()} function; it can be set to \code{None} to disable
764 the sort.
765\end{memberdesc}
766
767\begin{memberdesc}[TestLoader]{suiteClass}
768 Callable object that constructs a test suite from a list of tests.
769 No methods on the resulting object are needed. The default value is
770 the \class{TestSuite} class.
771\end{memberdesc}