Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / v8plus / html / python / lib / module-unittest.html
CommitLineData
920dae64
AT
1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2<html>
3<head>
4<link rel="STYLESHEET" href="lib.css" type='text/css' />
5<link rel="SHORTCUT ICON" href="../icons/pyfav.png" type="image/png" />
6<link rel='start' href='../index.html' title='Python Documentation Index' />
7<link rel="first" href="lib.html" title='Python Library Reference' />
8<link rel='contents' href='contents.html' title="Contents" />
9<link rel='index' href='genindex.html' title='Index' />
10<link rel='last' href='about.html' title='About this document...' />
11<link rel='help' href='about.html' title='About this document...' />
12<link rel="next" href="module-test.html" />
13<link rel="prev" href="module-doctest.html" />
14<link rel="parent" href="misc.html" />
15<link rel="next" href="node164.html" />
16<meta name='aesop' content='information' />
17<title>5.3 unittest -- Unit testing framework</title>
18</head>
19<body>
20<DIV CLASS="navigation">
21<div id='top-navigation-panel' xml:id='top-navigation-panel'>
22<table align="center" width="100%" cellpadding="0" cellspacing="2">
23<tr>
24<td class='online-navigation'><a rel="prev" title="5.2.8 Soapbox"
25 href="doctest-soapbox.html"><img src='../icons/previous.png'
26 border='0' height='32' alt='Previous Page' width='32' /></A></td>
27<td class='online-navigation'><a rel="parent" title="5. Miscellaneous Services"
28 href="misc.html"><img src='../icons/up.png'
29 border='0' height='32' alt='Up One Level' width='32' /></A></td>
30<td class='online-navigation'><a rel="next" title="5.3.1 Basic example"
31 href="node164.html"><img src='../icons/next.png'
32 border='0' height='32' alt='Next Page' width='32' /></A></td>
33<td align="center" width="100%">Python Library Reference</td>
34<td class='online-navigation'><a rel="contents" title="Table of Contents"
35 href="contents.html"><img src='../icons/contents.png'
36 border='0' height='32' alt='Contents' width='32' /></A></td>
37<td class='online-navigation'><a href="modindex.html" title="Module Index"><img src='../icons/modules.png'
38 border='0' height='32' alt='Module Index' width='32' /></a></td>
39<td class='online-navigation'><a rel="index" title="Index"
40 href="genindex.html"><img src='../icons/index.png'
41 border='0' height='32' alt='Index' width='32' /></A></td>
42</tr></table>
43<div class='online-navigation'>
44<b class="navlabel">Previous:</b>
45<a class="sectref" rel="prev" href="doctest-soapbox.html">5.2.8 Soapbox</A>
46<b class="navlabel">Up:</b>
47<a class="sectref" rel="parent" href="misc.html">5. Miscellaneous Services</A>
48<b class="navlabel">Next:</b>
49<a class="sectref" rel="next" href="node164.html">5.3.1 Basic example</A>
50</div>
51<hr /></div>
52</DIV>
53<!--End of Navigation Panel-->
54
55<H1><A NAME="SECTION007300000000000000000">
565.3 <tt class="module">unittest</tt> --
57 Unit testing framework</A>
58</H1>
59
60<P>
61<A NAME="module-unittest"></A>
62
63<P>
64
65<span class="versionnote">New in version 2.1.</span>
66
67<P>
68The Python unit testing framework, often referred to as ``PyUnit,'' is
69a Python language version of JUnit, by Kent Beck and Erich Gamma.
70JUnit is, in turn, a Java version of Kent's Smalltalk testing
71framework. Each is the de facto standard unit testing framework for
72its respective language.
73
74<P>
75PyUnit supports test automation, sharing of setup and shutdown code
76for tests, aggregation of tests into collections, and independence of
77the tests from the reporting framework. The <tt class="module">unittest</tt> module
78provides classes that make it easy to support these qualities for a
79set of tests.
80
81<P>
82To achieve this, PyUnit supports some important concepts:
83
84<P>
85<dl class="definitions">
86<dt><b><a id='l2h-1124' xml:id='l2h-1124'>test fixture</a></b></dt>
87<dd>
88A <i class="dfn">test fixture</i> represents the preparation needed to perform one
89or more tests, and any associate cleanup actions. This may involve,
90for example, creating temporary or proxy databases, directories, or
91starting a server process.
92
93<P>
94<dt><b><a id='l2h-1125' xml:id='l2h-1125'>test case</a></b></dt>
95<dd>
96A <i class="dfn">test case</i> is the smallest unit of testing. It checks for a
97specific response to a particular set of inputs. PyUnit provides a
98base class, <tt class="class">TestCase</tt>, which may be used to create new test
99cases. You may provide your own implementation that does not subclass
100from <tt class="class">TestCase</tt>, of course.
101
102<P>
103<dt><b><a id='l2h-1126' xml:id='l2h-1126'>test suite</a></b></dt>
104<dd>
105A <i class="dfn">test suite</i> is a collection of test cases, test suites, or
106both. It is used to aggregate tests that should be executed
107together.
108
109<P>
110<dt><b><a id='l2h-1127' xml:id='l2h-1127'>test runner</a></b></dt>
111<dd>
112A <i class="dfn">test runner</i> is a component which orchestrates the execution of
113tests and provides the outcome to the user. The runner may use a
114graphical interface, a textual interface, or return a special value to
115indicate the results of executing the tests.
116</dl>
117
118<P>
119The test case and test fixture concepts are supported through the
120<tt class="class">TestCase</tt> and <tt class="class">FunctionTestCase</tt> classes; the former
121should be used when creating new tests, and the latter can be used when
122integrating existing test code with a PyUnit-driven framework. When
123building test fixtures using <tt class="class">TestCase</tt>, the <tt class="method">setUp()</tt>
124and <tt class="method">tearDown()</tt> methods can be overridden to provide
125initialization and cleanup for the fixture. With
126<tt class="class">FunctionTestCase</tt>, existing functions can be passed to the
127constructor for these purposes. When the test is run, the
128fixture initialization is run first; if it succeeds, the cleanup
129method is run after the test has been executed, regardless of the
130outcome of the test. Each instance of the <tt class="class">TestCase</tt> will only
131be used to run a single test method, so a new fixture is created for
132each test.
133
134<P>
135Test suites are implemented by the <tt class="class">TestSuite</tt> class. This
136class allows individual tests and test suites to be aggregated; when
137the suite is executed, all tests added directly to the suite and in
138``child'' test suites are run.
139
140<P>
141A test runner is an object that provides a single method,
142<tt class="method">run()</tt>, which accepts a <tt class="class">TestCase</tt> or <tt class="class">TestSuite</tt>
143object as a parameter, and returns a result object. The class
144<tt class="class">TestResult</tt> is provided for use as the result object. PyUnit
145provide the <tt class="class">TextTestRunner</tt> as an example test runner which
146reports test results on the standard error stream by default.
147Alternate runners can be implemented for other environments (such as
148graphical environments) without any need to derive from a specific
149class.
150
151<P>
152<div class="seealso">
153 <p class="heading">See Also:</p>
154
155 <dl compact="compact" class="seemodule">
156 <dt>Module <b><tt class="module"><a href="module-doctest.html">doctest</a></tt>:</b>
157 <dd>Another test-support module with a very
158 different flavor.
159 </dl>
160 <dl compact="compact" class="seetitle">
161 <dt><em class="citetitle"><a href="http://pyunit.sourceforge.net/"
162 >PyUnit Web Site</a></em></dt>
163 <dd>The
164 source for further information on PyUnit.</dd>
165 </dl>
166 <dl compact="compact" class="seetitle">
167 <dt><em class="citetitle"><a href="http://www.XProgramming.com/testfram.htm"
168 >Simple Smalltalk
169 Testing: With Patterns</a></em></dt>
170 <dd>Kent Beck's original paper on
171 testing frameworks using the pattern shared by
172 <tt class="module">unittest</tt>.</dd>
173 </dl>
174</div>
175
176<P>
177
178<p><br /></p><hr class='online-navigation' />
179<div class='online-navigation'>
180<!--Table of Child-Links-->
181<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></a>
182
183<UL CLASS="ChildLinks">
184<LI><A href="node164.html">5.3.1 Basic example</a>
185<LI><A href="organizing-tests.html">5.3.2 Organizing test code</a>
186<LI><A href="legacy-unit-tests.html">5.3.3 Re-using old test code</a>
187<LI><A href="unittest-contents.html">5.3.4 Classes and functions</a>
188<LI><A href="testcase-objects.html">5.3.5 TestCase Objects</a>
189<LI><A href="testsuite-objects.html">5.3.6 TestSuite Objects</a>
190<LI><A href="testresult-objects.html">5.3.7 TestResult Objects</a>
191<LI><A href="testloader-objects.html">5.3.8 TestLoader Objects</a>
192</ul>
193<!--End of Table of Child-Links-->
194</div>
195
196<DIV CLASS="navigation">
197<div class='online-navigation'>
198<p></p><hr />
199<table align="center" width="100%" cellpadding="0" cellspacing="2">
200<tr>
201<td class='online-navigation'><a rel="prev" title="5.2.8 Soapbox"
202 href="doctest-soapbox.html"><img src='../icons/previous.png'
203 border='0' height='32' alt='Previous Page' width='32' /></A></td>
204<td class='online-navigation'><a rel="parent" title="5. Miscellaneous Services"
205 href="misc.html"><img src='../icons/up.png'
206 border='0' height='32' alt='Up One Level' width='32' /></A></td>
207<td class='online-navigation'><a rel="next" title="5.3.1 Basic example"
208 href="node164.html"><img src='../icons/next.png'
209 border='0' height='32' alt='Next Page' width='32' /></A></td>
210<td align="center" width="100%">Python Library Reference</td>
211<td class='online-navigation'><a rel="contents" title="Table of Contents"
212 href="contents.html"><img src='../icons/contents.png'
213 border='0' height='32' alt='Contents' width='32' /></A></td>
214<td class='online-navigation'><a href="modindex.html" title="Module Index"><img src='../icons/modules.png'
215 border='0' height='32' alt='Module Index' width='32' /></a></td>
216<td class='online-navigation'><a rel="index" title="Index"
217 href="genindex.html"><img src='../icons/index.png'
218 border='0' height='32' alt='Index' width='32' /></A></td>
219</tr></table>
220<div class='online-navigation'>
221<b class="navlabel">Previous:</b>
222<a class="sectref" rel="prev" href="doctest-soapbox.html">5.2.8 Soapbox</A>
223<b class="navlabel">Up:</b>
224<a class="sectref" rel="parent" href="misc.html">5. Miscellaneous Services</A>
225<b class="navlabel">Next:</b>
226<a class="sectref" rel="next" href="node164.html">5.3.1 Basic example</A>
227</div>
228</div>
229<hr />
230<span class="release-info">Release 2.4.2, documentation updated on 28 September 2005.</span>
231</DIV>
232<!--End of Navigation Panel-->
233<ADDRESS>
234See <i><a href="about.html">About this document...</a></i> for information on suggesting changes.
235</ADDRESS>
236</BODY>
237</HTML>