This commit was manufactured by cvs2svn to create tag 'r241c1'.
[python/dscho.git] / Doc / lib / libdoctest.tex
blobf5560f56451566b7ef8925747999fa4459d91478
1 \section{\module{doctest} ---
2 Test interactive Python examples}
4 \declaremodule{standard}{doctest}
5 \moduleauthor{Tim Peters}{tim@python.org}
6 \sectionauthor{Tim Peters}{tim@python.org}
7 \sectionauthor{Moshe Zadka}{moshez@debian.org}
8 \sectionauthor{Edward Loper}{edloper@users.sourceforge.net}
10 \modulesynopsis{A framework for verifying interactive Python examples.}
12 The \refmodule{doctest} module searches for pieces of text that look like
13 interactive Python sessions, and then executes those sessions to
14 verify that they work exactly as shown. There are several common ways to
15 use doctest:
17 \begin{itemize}
18 \item To check that a module's docstrings are up-to-date by verifying
19 that all interactive examples still work as documented.
20 \item To perform regression testing by verifying that interactive
21 examples from a test file or a test object work as expected.
22 \item To write tutorial documentation for a package, liberally
23 illustrated with input-output examples. Depending on whether
24 the examples or the expository text are emphasized, this has
25 the flavor of "literate testing" or "executable documentation".
26 \end{itemize}
28 Here's a complete but small example module:
30 \begin{verbatim}
31 """
32 This is the "example" module.
34 The example module supplies one function, factorial(). For example,
36 >>> factorial(5)
37 120
38 """
40 def factorial(n):
41 """Return the factorial of n, an exact integer >= 0.
43 If the result is small enough to fit in an int, return an int.
44 Else return a long.
46 >>> [factorial(n) for n in range(6)]
47 [1, 1, 2, 6, 24, 120]
48 >>> [factorial(long(n)) for n in range(6)]
49 [1, 1, 2, 6, 24, 120]
50 >>> factorial(30)
51 265252859812191058636308480000000L
52 >>> factorial(30L)
53 265252859812191058636308480000000L
54 >>> factorial(-1)
55 Traceback (most recent call last):
56 ...
57 ValueError: n must be >= 0
59 Factorials of floats are OK, but the float must be an exact integer:
60 >>> factorial(30.1)
61 Traceback (most recent call last):
62 ...
63 ValueError: n must be exact integer
64 >>> factorial(30.0)
65 265252859812191058636308480000000L
67 It must also not be ridiculously large:
68 >>> factorial(1e100)
69 Traceback (most recent call last):
70 ...
71 OverflowError: n too large
72 """
74 \end{verbatim}
75 % allow LaTeX to break here.
76 \begin{verbatim}
78 import math
79 if not n >= 0:
80 raise ValueError("n must be >= 0")
81 if math.floor(n) != n:
82 raise ValueError("n must be exact integer")
83 if n+1 == n: # catch a value like 1e300
84 raise OverflowError("n too large")
85 result = 1
86 factor = 2
87 while factor <= n:
88 result *= factor
89 factor += 1
90 return result
92 def _test():
93 import doctest
94 doctest.testmod()
96 if __name__ == "__main__":
97 _test()
98 \end{verbatim}
100 If you run \file{example.py} directly from the command line,
101 \refmodule{doctest} works its magic:
103 \begin{verbatim}
104 $ python example.py
106 \end{verbatim}
108 There's no output! That's normal, and it means all the examples
109 worked. Pass \programopt{-v} to the script, and \refmodule{doctest}
110 prints a detailed log of what it's trying, and prints a summary at the
111 end:
113 \begin{verbatim}
114 $ python example.py -v
115 Trying:
116 factorial(5)
117 Expecting:
120 Trying:
121 [factorial(n) for n in range(6)]
122 Expecting:
123 [1, 1, 2, 6, 24, 120]
125 Trying:
126 [factorial(long(n)) for n in range(6)]
127 Expecting:
128 [1, 1, 2, 6, 24, 120]
130 \end{verbatim}
132 And so on, eventually ending with:
134 \begin{verbatim}
135 Trying:
136 factorial(1e100)
137 Expecting:
138 Traceback (most recent call last):
140 OverflowError: n too large
142 1 items had no tests:
143 __main__._test
144 2 items passed all tests:
145 1 tests in __main__
146 8 tests in __main__.factorial
147 9 tests in 3 items.
148 9 passed and 0 failed.
149 Test passed.
151 \end{verbatim}
153 That's all you need to know to start making productive use of
154 \refmodule{doctest}! Jump in. The following sections provide full
155 details. Note that there are many examples of doctests in
156 the standard Python test suite and libraries. Especially useful examples
157 can be found in the standard test file \file{Lib/test/test_doctest.py}.
159 \subsection{Simple Usage: Checking Examples in
160 Docstrings\label{doctest-simple-testmod}}
162 The simplest way to start using doctest (but not necessarily the way
163 you'll continue to do it) is to end each module \module{M} with:
165 \begin{verbatim}
166 def _test():
167 import doctest
168 doctest.testmod()
170 if __name__ == "__main__":
171 _test()
172 \end{verbatim}
174 \refmodule{doctest} then examines docstrings in module \module{M}.
176 Running the module as a script causes the examples in the docstrings
177 to get executed and verified:
179 \begin{verbatim}
180 python M.py
181 \end{verbatim}
183 This won't display anything unless an example fails, in which case the
184 failing example(s) and the cause(s) of the failure(s) are printed to stdout,
185 and the final line of output is
186 \samp{***Test Failed*** \var{N} failures.}, where \var{N} is the
187 number of examples that failed.
189 Run it with the \programopt{-v} switch instead:
191 \begin{verbatim}
192 python M.py -v
193 \end{verbatim}
195 and a detailed report of all examples tried is printed to standard
196 output, along with assorted summaries at the end.
198 You can force verbose mode by passing \code{verbose=True} to
199 \function{testmod()}, or
200 prohibit it by passing \code{verbose=False}. In either of those cases,
201 \code{sys.argv} is not examined by \function{testmod()} (so passing
202 \programopt{-v} or not has no effect).
204 For more information on \function{testmod()}, see
205 section~\ref{doctest-basic-api}.
207 \subsection{Simple Usage: Checking Examples in a Text
208 File\label{doctest-simple-testfile}}
210 Another simple application of doctest is testing interactive examples
211 in a text file. This can be done with the \function{testfile()}
212 function:
214 \begin{verbatim}
215 import doctest
216 doctest.testfile("example.txt")
217 \end{verbatim}
219 That short script executes and verifies any interactive Python
220 examples contained in the file \file{example.txt}. The file content
221 is treated as if it were a single giant docstring; the file doesn't
222 need to contain a Python program! For example, perhaps \file{example.txt}
223 contains this:
225 \begin{verbatim}
226 The ``example`` module
227 ======================
229 Using ``factorial``
230 -------------------
232 This is an example text file in reStructuredText format. First import
233 ``factorial`` from the ``example`` module:
235 >>> from example import factorial
237 Now use it:
239 >>> factorial(6)
241 \end{verbatim}
243 Running \code{doctest.testfile("example.txt")} then finds the error
244 in this documentation:
246 \begin{verbatim}
247 File "./example.txt", line 14, in example.txt
248 Failed example:
249 factorial(6)
250 Expected:
252 Got:
254 \end{verbatim}
256 As with \function{testmod()}, \function{testfile()} won't display anything
257 unless an example fails. If an example does fail, then the failing
258 example(s) and the cause(s) of the failure(s) are printed to stdout, using
259 the same format as \function{testmod()}.
261 By default, \function{testfile()} looks for files in the calling
262 module's directory. See section~\ref{doctest-basic-api} for a
263 description of the optional arguments that can be used to tell it to
264 look for files in other locations.
266 Like \function{testmod()}, \function{testfile()}'s verbosity can be
267 set with the \programopt{-v} command-line switch or with the optional
268 keyword argument \var{verbose}.
270 For more information on \function{testfile()}, see
271 section~\ref{doctest-basic-api}.
273 \subsection{How It Works\label{doctest-how-it-works}}
275 This section examines in detail how doctest works: which docstrings it
276 looks at, how it finds interactive examples, what execution context it
277 uses, how it handles exceptions, and how option flags can be used to
278 control its behavior. This is the information that you need to know
279 to write doctest examples; for information about actually running
280 doctest on these examples, see the following sections.
282 \subsubsection{Which Docstrings Are Examined?\label{doctest-which-docstrings}}
284 The module docstring, and all function, class and method docstrings are
285 searched. Objects imported into the module are not searched.
287 In addition, if \code{M.__test__} exists and "is true", it must be a
288 dict, and each entry maps a (string) name to a function object, class
289 object, or string. Function and class object docstrings found from
290 \code{M.__test__} are searched, and strings are treated as if they
291 were docstrings. In output, a key \code{K} in \code{M.__test__} appears
292 with name
294 \begin{verbatim}
295 <name of M>.__test__.K
296 \end{verbatim}
298 Any classes found are recursively searched similarly, to test docstrings in
299 their contained methods and nested classes.
301 \versionchanged[A "private name" concept is deprecated and no longer
302 documented]{2.4}
304 \subsubsection{How are Docstring Examples
305 Recognized?\label{doctest-finding-examples}}
307 In most cases a copy-and-paste of an interactive console session works
308 fine, but doctest isn't trying to do an exact emulation of any specific
309 Python shell. All hard tab characters are expanded to spaces, using
310 8-column tab stops. If you don't believe tabs should mean that, too
311 bad: don't use hard tabs, or write your own \class{DocTestParser}
312 class.
314 \versionchanged[Expanding tabs to spaces is new; previous versions
315 tried to preserve hard tabs, with confusing results]{2.4}
317 \begin{verbatim}
318 >>> # comments are ignored
319 >>> x = 12
320 >>> x
322 >>> if x == 13:
323 ... print "yes"
324 ... else:
325 ... print "no"
326 ... print "NO"
327 ... print "NO!!!"
331 NO!!!
333 \end{verbatim}
335 Any expected output must immediately follow the final
336 \code{'>\code{>}>~'} or \code{'...~'} line containing the code, and
337 the expected output (if any) extends to the next \code{'>\code{>}>~'}
338 or all-whitespace line.
340 The fine print:
342 \begin{itemize}
344 \item Expected output cannot contain an all-whitespace line, since such a
345 line is taken to signal the end of expected output. If expected
346 output does contain a blank line, put \code{<BLANKLINE>} in your
347 doctest example each place a blank line is expected.
348 \versionchanged[\code{<BLANKLINE>} was added; there was no way to
349 use expected output containing empty lines in
350 previous versions]{2.4}
352 \item Output to stdout is captured, but not output to stderr (exception
353 tracebacks are captured via a different means).
355 \item If you continue a line via backslashing in an interactive session,
356 or for any other reason use a backslash, you should use a raw
357 docstring, which will preserve your backslashes exactly as you type
358 them:
360 \begin{verbatim}
361 >>> def f(x):
362 ... r'''Backslashes in a raw docstring: m\n'''
363 >>> print f.__doc__
364 Backslashes in a raw docstring: m\n
365 \end{verbatim}
367 Otherwise, the backslash will be interpreted as part of the string.
368 For example, the "{\textbackslash}" above would be interpreted as a
369 newline character. Alternatively, you can double each backslash in the
370 doctest version (and not use a raw string):
372 \begin{verbatim}
373 >>> def f(x):
374 ... '''Backslashes in a raw docstring: m\\n'''
375 >>> print f.__doc__
376 Backslashes in a raw docstring: m\n
377 \end{verbatim}
379 \item The starting column doesn't matter:
381 \begin{verbatim}
382 >>> assert "Easy!"
383 >>> import math
384 >>> math.floor(1.9)
386 \end{verbatim}
388 and as many leading whitespace characters are stripped from the
389 expected output as appeared in the initial \code{'>\code{>}>~'} line
390 that started the example.
391 \end{itemize}
393 \subsubsection{What's the Execution Context?\label{doctest-execution-context}}
395 By default, each time \refmodule{doctest} finds a docstring to test, it
396 uses a \emph{shallow copy} of \module{M}'s globals, so that running tests
397 doesn't change the module's real globals, and so that one test in
398 \module{M} can't leave behind crumbs that accidentally allow another test
399 to work. This means examples can freely use any names defined at top-level
400 in \module{M}, and names defined earlier in the docstring being run.
401 Examples cannot see names defined in other docstrings.
403 You can force use of your own dict as the execution context by passing
404 \code{globs=your_dict} to \function{testmod()} or
405 \function{testfile()} instead.
407 \subsubsection{What About Exceptions?\label{doctest-exceptions}}
409 No problem, provided that the traceback is the only output produced by
410 the example: just paste in the traceback. Since tracebacks contain
411 details that are likely to change rapidly (for example, exact file paths
412 and line numbers), this is one case where doctest works hard to be
413 flexible in what it accepts.
415 Simple example:
417 \begin{verbatim}
418 >>> [1, 2, 3].remove(42)
419 Traceback (most recent call last):
420 File "<stdin>", line 1, in ?
421 ValueError: list.remove(x): x not in list
422 \end{verbatim}
424 That doctest succeeds if \exception{ValueError} is raised, with the
425 \samp{list.remove(x): x not in list} detail as shown.
427 The expected output for an exception must start with a traceback
428 header, which may be either of the following two lines, indented the
429 same as the first line of the example:
431 \begin{verbatim}
432 Traceback (most recent call last):
433 Traceback (innermost last):
434 \end{verbatim}
436 The traceback header is followed by an optional traceback stack, whose
437 contents are ignored by doctest. The traceback stack is typically
438 omitted, or copied verbatim from an interactive session.
440 The traceback stack is followed by the most interesting part: the
441 line(s) containing the exception type and detail. This is usually the
442 last line of a traceback, but can extend across multiple lines if the
443 exception has a multi-line detail:
445 \begin{verbatim}
446 >>> raise ValueError('multi\n line\ndetail')
447 Traceback (most recent call last):
448 File "<stdin>", line 1, in ?
449 ValueError: multi
450 line
451 detail
452 \end{verbatim}
454 The last three lines (starting with \exception{ValueError}) are
455 compared against the exception's type and detail, and the rest are
456 ignored.
458 Best practice is to omit the traceback stack, unless it adds
459 significant documentation value to the example. So the last example
460 is probably better as:
462 \begin{verbatim}
463 >>> raise ValueError('multi\n line\ndetail')
464 Traceback (most recent call last):
466 ValueError: multi
467 line
468 detail
469 \end{verbatim}
471 Note that tracebacks are treated very specially. In particular, in the
472 rewritten example, the use of \samp{...} is independent of doctest's
473 \constant{ELLIPSIS} option. The ellipsis in that example could be left
474 out, or could just as well be three (or three hundred) commas or digits,
475 or an indented transcript of a Monty Python skit.
477 Some details you should read once, but won't need to remember:
479 \begin{itemize}
481 \item Doctest can't guess whether your expected output came from an
482 exception traceback or from ordinary printing. So, e.g., an example
483 that expects \samp{ValueError: 42 is prime} will pass whether
484 \exception{ValueError} is actually raised or if the example merely
485 prints that traceback text. In practice, ordinary output rarely begins
486 with a traceback header line, so this doesn't create real problems.
488 \item Each line of the traceback stack (if present) must be indented
489 further than the first line of the example, \emph{or} start with a
490 non-alphanumeric character. The first line following the traceback
491 header indented the same and starting with an alphanumeric is taken
492 to be the start of the exception detail. Of course this does the
493 right thing for genuine tracebacks.
495 \item When the \constant{IGNORE_EXCEPTION_DETAIL} doctest option is
496 is specified, everything following the leftmost colon is ignored.
498 \item The interactive shell omits the traceback header line for some
499 \exception{SyntaxError}s. But doctest uses the traceback header
500 line to distinguish exceptions from non-exceptions. So in the rare
501 case where you need to test a \exception{SyntaxError} that omits the
502 traceback header, you will need to manually add the traceback header
503 line to your test example.
505 \item For some \exception{SyntaxError}s, Python displays the character
506 position of the syntax error, using a \code{\^} marker:
508 \begin{verbatim}
509 >>> 1 1
510 File "<stdin>", line 1
513 SyntaxError: invalid syntax
514 \end{verbatim}
516 Since the lines showing the position of the error come before the
517 exception type and detail, they are not checked by doctest. For
518 example, the following test would pass, even though it puts the
519 \code{\^} marker in the wrong location:
521 \begin{verbatim}
522 >>> 1 1
523 Traceback (most recent call last):
524 File "<stdin>", line 1
527 SyntaxError: invalid syntax
528 \end{verbatim}
530 \end{itemize}
532 \versionchanged[The ability to handle a multi-line exception detail,
533 and the \constant{IGNORE_EXCEPTION_DETAIL} doctest option,
534 were added]{2.4}
536 \subsubsection{Option Flags and Directives\label{doctest-options}}
538 A number of option flags control various aspects of doctest's
539 behavior. Symbolic names for the flags are supplied as module constants,
540 which can be or'ed together and passed to various functions. The names
541 can also be used in doctest directives (see below).
543 The first group of options define test semantics, controlling
544 aspects of how doctest decides whether actual output matches an
545 example's expected output:
547 \begin{datadesc}{DONT_ACCEPT_TRUE_FOR_1}
548 By default, if an expected output block contains just \code{1},
549 an actual output block containing just \code{1} or just
550 \code{True} is considered to be a match, and similarly for \code{0}
551 versus \code{False}. When \constant{DONT_ACCEPT_TRUE_FOR_1} is
552 specified, neither substitution is allowed. The default behavior
553 caters to that Python changed the return type of many functions
554 from integer to boolean; doctests expecting "little integer"
555 output still work in these cases. This option will probably go
556 away, but not for several years.
557 \end{datadesc}
559 \begin{datadesc}{DONT_ACCEPT_BLANKLINE}
560 By default, if an expected output block contains a line
561 containing only the string \code{<BLANKLINE>}, then that line
562 will match a blank line in the actual output. Because a
563 genuinely blank line delimits the expected output, this is
564 the only way to communicate that a blank line is expected. When
565 \constant{DONT_ACCEPT_BLANKLINE} is specified, this substitution
566 is not allowed.
567 \end{datadesc}
569 \begin{datadesc}{NORMALIZE_WHITESPACE}
570 When specified, all sequences of whitespace (blanks and newlines) are
571 treated as equal. Any sequence of whitespace within the expected
572 output will match any sequence of whitespace within the actual output.
573 By default, whitespace must match exactly.
574 \constant{NORMALIZE_WHITESPACE} is especially useful when a line
575 of expected output is very long, and you want to wrap it across
576 multiple lines in your source.
577 \end{datadesc}
579 \begin{datadesc}{ELLIPSIS}
580 When specified, an ellipsis marker (\code{...}) in the expected output
581 can match any substring in the actual output. This includes
582 substrings that span line boundaries, and empty substrings, so it's
583 best to keep usage of this simple. Complicated uses can lead to the
584 same kinds of "oops, it matched too much!" surprises that \regexp{.*}
585 is prone to in regular expressions.
586 \end{datadesc}
588 \begin{datadesc}{IGNORE_EXCEPTION_DETAIL}
589 When specified, an example that expects an exception passes if
590 an exception of the expected type is raised, even if the exception
591 detail does not match. For example, an example expecting
592 \samp{ValueError: 42} will pass if the actual exception raised is
593 \samp{ValueError: 3*14}, but will fail, e.g., if
594 \exception{TypeError} is raised.
596 Note that a similar effect can be obtained using \constant{ELLIPSIS},
597 and \constant{IGNORE_EXCEPTION_DETAIL} may go away when Python releases
598 prior to 2.4 become uninteresting. Until then,
599 \constant{IGNORE_EXCEPTION_DETAIL} is the only clear way to write a
600 doctest that doesn't care about the exception detail yet continues
601 to pass under Python releases prior to 2.4 (doctest directives
602 appear to be comments to them). For example,
604 \begin{verbatim}
605 >>> (1, 2)[3] = 'moo' #doctest: +IGNORE_EXCEPTION_DETAIL
606 Traceback (most recent call last):
607 File "<stdin>", line 1, in ?
608 TypeError: object doesn't support item assignment
609 \end{verbatim}
611 passes under Python 2.4 and Python 2.3. The detail changed in 2.4,
612 to say "does not" instead of "doesn't".
614 \end{datadesc}
616 \begin{datadesc}{COMPARISON_FLAGS}
617 A bitmask or'ing together all the comparison flags above.
618 \end{datadesc}
620 The second group of options controls how test failures are reported:
622 \begin{datadesc}{REPORT_UDIFF}
623 When specified, failures that involve multi-line expected and
624 actual outputs are displayed using a unified diff.
625 \end{datadesc}
627 \begin{datadesc}{REPORT_CDIFF}
628 When specified, failures that involve multi-line expected and
629 actual outputs will be displayed using a context diff.
630 \end{datadesc}
632 \begin{datadesc}{REPORT_NDIFF}
633 When specified, differences are computed by \code{difflib.Differ},
634 using the same algorithm as the popular \file{ndiff.py} utility.
635 This is the only method that marks differences within lines as
636 well as across lines. For example, if a line of expected output
637 contains digit \code{1} where actual output contains letter \code{l},
638 a line is inserted with a caret marking the mismatching column
639 positions.
640 \end{datadesc}
642 \begin{datadesc}{REPORT_ONLY_FIRST_FAILURE}
643 When specified, display the first failing example in each doctest,
644 but suppress output for all remaining examples. This will prevent
645 doctest from reporting correct examples that break because of
646 earlier failures; but it might also hide incorrect examples that
647 fail independently of the first failure. When
648 \constant{REPORT_ONLY_FIRST_FAILURE} is specified, the remaining
649 examples are still run, and still count towards the total number of
650 failures reported; only the output is suppressed.
651 \end{datadesc}
653 \begin{datadesc}{REPORTING_FLAGS}
654 A bitmask or'ing together all the reporting flags above.
655 \end{datadesc}
657 "Doctest directives" may be used to modify the option flags for
658 individual examples. Doctest directives are expressed as a special
659 Python comment following an example's source code:
661 \begin{productionlist}[doctest]
662 \production{directive}
663 {"\#" "doctest:" \token{directive_options}}
664 \production{directive_options}
665 {\token{directive_option} ("," \token{directive_option})*}
666 \production{directive_option}
667 {\token{on_or_off} \token{directive_option_name}}
668 \production{on_or_off}
669 {"+" | "-"}
670 \production{directive_option_name}
671 {"DONT_ACCEPT_BLANKLINE" | "NORMALIZE_WHITESPACE" | ...}
672 \end{productionlist}
674 Whitespace is not allowed between the \code{+} or \code{-} and the
675 directive option name. The directive option name can be any of the
676 option flag names explained above.
678 An example's doctest directives modify doctest's behavior for that
679 single example. Use \code{+} to enable the named behavior, or
680 \code{-} to disable it.
682 For example, this test passes:
684 \begin{verbatim}
685 >>> print range(20) #doctest: +NORMALIZE_WHITESPACE
686 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
687 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
688 \end{verbatim}
690 Without the directive it would fail, both because the actual output
691 doesn't have two blanks before the single-digit list elements, and
692 because the actual output is on a single line. This test also passes,
693 and also requires a directive to do so:
695 \begin{verbatim}
696 >>> print range(20) # doctest:+ELLIPSIS
697 [0, 1, ..., 18, 19]
698 \end{verbatim}
700 Multiple directives can be used on a single physical line, separated
701 by commas:
703 \begin{verbatim}
704 >>> print range(20) # doctest: +ELLIPSIS, +NORMALIZE_WHITESPACE
705 [0, 1, ..., 18, 19]
706 \end{verbatim}
708 If multiple directive comments are used for a single example, then
709 they are combined:
711 \begin{verbatim}
712 >>> print range(20) # doctest: +ELLIPSIS
713 ... # doctest: +NORMALIZE_WHITESPACE
714 [0, 1, ..., 18, 19]
715 \end{verbatim}
717 As the previous example shows, you can add \samp{...} lines to your
718 example containing only directives. This can be useful when an
719 example is too long for a directive to comfortably fit on the same
720 line:
722 \begin{verbatim}
723 >>> print range(5) + range(10,20) + range(30,40) + range(50,60)
724 ... # doctest: +ELLIPSIS
725 [0, ..., 4, 10, ..., 19, 30, ..., 39, 50, ..., 59]
726 \end{verbatim}
728 Note that since all options are disabled by default, and directives apply
729 only to the example they appear in, enabling options (via \code{+} in a
730 directive) is usually the only meaningful choice. However, option flags
731 can also be passed to functions that run doctests, establishing different
732 defaults. In such cases, disabling an option via \code{-} in a directive
733 can be useful.
735 \versionchanged[Constants \constant{DONT_ACCEPT_BLANKLINE},
736 \constant{NORMALIZE_WHITESPACE}, \constant{ELLIPSIS},
737 \constant{IGNORE_EXCEPTION_DETAIL},
738 \constant{REPORT_UDIFF}, \constant{REPORT_CDIFF},
739 \constant{REPORT_NDIFF}, \constant{REPORT_ONLY_FIRST_FAILURE},
740 \constant{COMPARISON_FLAGS} and \constant{REPORTING_FLAGS}
741 were added; by default \code{<BLANKLINE>} in expected output
742 matches an empty line in actual output; and doctest directives
743 were added]{2.4}
745 There's also a way to register new option flag names, although this
746 isn't useful unless you intend to extend \refmodule{doctest} internals
747 via subclassing:
749 \begin{funcdesc}{register_optionflag}{name}
750 Create a new option flag with a given name, and return the new
751 flag's integer value. \function{register_optionflag()} can be
752 used when subclassing \class{OutputChecker} or
753 \class{DocTestRunner} to create new options that are supported by
754 your subclasses. \function{register_optionflag} should always be
755 called using the following idiom:
757 \begin{verbatim}
758 MY_FLAG = register_optionflag('MY_FLAG')
759 \end{verbatim}
761 \versionadded{2.4}
762 \end{funcdesc}
764 \subsubsection{Warnings\label{doctest-warnings}}
766 \refmodule{doctest} is serious about requiring exact matches in expected
767 output. If even a single character doesn't match, the test fails. This
768 will probably surprise you a few times, as you learn exactly what Python
769 does and doesn't guarantee about output. For example, when printing a
770 dict, Python doesn't guarantee that the key-value pairs will be printed
771 in any particular order, so a test like
773 % Hey! What happened to Monty Python examples?
774 % Tim: ask Guido -- it's his example!
775 \begin{verbatim}
776 >>> foo()
777 {"Hermione": "hippogryph", "Harry": "broomstick"}
778 \end{verbatim}
780 is vulnerable! One workaround is to do
782 \begin{verbatim}
783 >>> foo() == {"Hermione": "hippogryph", "Harry": "broomstick"}
784 True
785 \end{verbatim}
787 instead. Another is to do
789 \begin{verbatim}
790 >>> d = foo().items()
791 >>> d.sort()
792 >>> d
793 [('Harry', 'broomstick'), ('Hermione', 'hippogryph')]
794 \end{verbatim}
796 There are others, but you get the idea.
798 Another bad idea is to print things that embed an object address, like
800 \begin{verbatim}
801 >>> id(1.0) # certain to fail some of the time
802 7948648
803 >>> class C: pass
804 >>> C() # the default repr() for instances embeds an address
805 <__main__.C instance at 0x00AC18F0>
806 \end{verbatim}
808 The \constant{ELLIPSIS} directive gives a nice approach for the last
809 example:
811 \begin{verbatim}
812 >>> C() #doctest: +ELLIPSIS
813 <__main__.C instance at 0x...>
814 \end{verbatim}
816 Floating-point numbers are also subject to small output variations across
817 platforms, because Python defers to the platform C library for float
818 formatting, and C libraries vary widely in quality here.
820 \begin{verbatim}
821 >>> 1./7 # risky
822 0.14285714285714285
823 >>> print 1./7 # safer
824 0.142857142857
825 >>> print round(1./7, 6) # much safer
826 0.142857
827 \end{verbatim}
829 Numbers of the form \code{I/2.**J} are safe across all platforms, and I
830 often contrive doctest examples to produce numbers of that form:
832 \begin{verbatim}
833 >>> 3./4 # utterly safe
834 0.75
835 \end{verbatim}
837 Simple fractions are also easier for people to understand, and that makes
838 for better documentation.
840 \subsection{Basic API\label{doctest-basic-api}}
842 The functions \function{testmod()} and \function{testfile()} provide a
843 simple interface to doctest that should be sufficient for most basic
844 uses. For a less formal introduction to these two functions, see
845 sections \ref{doctest-simple-testmod} and
846 \ref{doctest-simple-testfile}.
848 \begin{funcdesc}{testfile}{filename\optional{, module_relative}\optional{,
849 name}\optional{, package}\optional{,
850 globs}\optional{, verbose}\optional{,
851 report}\optional{, optionflags}\optional{,
852 extraglobs}\optional{, raise_on_error}\optional{,
853 parser}}
855 All arguments except \var{filename} are optional, and should be
856 specified in keyword form.
858 Test examples in the file named \var{filename}. Return
859 \samp{(\var{failure_count}, \var{test_count})}.
861 Optional argument \var{module_relative} specifies how the filename
862 should be interpreted:
864 \begin{itemize}
865 \item If \var{module_relative} is \code{True} (the default), then
866 \var{filename} specifies an OS-independent module-relative
867 path. By default, this path is relative to the calling
868 module's directory; but if the \var{package} argument is
869 specified, then it is relative to that package. To ensure
870 OS-independence, \var{filename} should use \code{/} characters
871 to separate path segments, and may not be an absolute path
872 (i.e., it may not begin with \code{/}).
873 \item If \var{module_relative} is \code{False}, then \var{filename}
874 specifies an OS-specific path. The path may be absolute or
875 relative; relative paths are resolved with respect to the
876 current working directory.
877 \end{itemize}
879 Optional argument \var{name} gives the name of the test; by default,
880 or if \code{None}, \code{os.path.basename(\var{filename})} is used.
882 Optional argument \var{package} is a Python package or the name of a
883 Python package whose directory should be used as the base directory
884 for a module-relative filename. If no package is specified, then
885 the calling module's directory is used as the base directory for
886 module-relative filenames. It is an error to specify \var{package}
887 if \var{module_relative} is \code{False}.
889 Optional argument \var{globs} gives a dict to be used as the globals
890 when executing examples. A new shallow copy of this dict is
891 created for the doctest, so its examples start with a clean slate.
892 By default, or if \code{None}, a new empty dict is used.
894 Optional argument \var{extraglobs} gives a dict merged into the
895 globals used to execute examples. This works like
896 \method{dict.update()}: if \var{globs} and \var{extraglobs} have a
897 common key, the associated value in \var{extraglobs} appears in the
898 combined dict. By default, or if \code{None}, no extra globals are
899 used. This is an advanced feature that allows parameterization of
900 doctests. For example, a doctest can be written for a base class, using
901 a generic name for the class, then reused to test any number of
902 subclasses by passing an \var{extraglobs} dict mapping the generic
903 name to the subclass to be tested.
905 Optional argument \var{verbose} prints lots of stuff if true, and prints
906 only failures if false; by default, or if \code{None}, it's true
907 if and only if \code{'-v'} is in \code{sys.argv}.
909 Optional argument \var{report} prints a summary at the end when true,
910 else prints nothing at the end. In verbose mode, the summary is
911 detailed, else the summary is very brief (in fact, empty if all tests
912 passed).
914 Optional argument \var{optionflags} or's together option flags. See
915 section~\ref{doctest-options}.
917 Optional argument \var{raise_on_error} defaults to false. If true,
918 an exception is raised upon the first failure or unexpected exception
919 in an example. This allows failures to be post-mortem debugged.
920 Default behavior is to continue running examples.
922 Optional argument \var{parser} specifies a \class{DocTestParser} (or
923 subclass) that should be used to extract tests from the files. It
924 defaults to a normal parser (i.e., \code{\class{DocTestParser}()}).
926 \versionadded{2.4}
927 \end{funcdesc}
929 \begin{funcdesc}{testmod}{\optional{m}\optional{, name}\optional{,
930 globs}\optional{, verbose}\optional{,
931 isprivate}\optional{, report}\optional{,
932 optionflags}\optional{, extraglobs}\optional{,
933 raise_on_error}\optional{, exclude_empty}}
935 All arguments are optional, and all except for \var{m} should be
936 specified in keyword form.
938 Test examples in docstrings in functions and classes reachable
939 from module \var{m} (or module \module{__main__} if \var{m} is not
940 supplied or is \code{None}), starting with \code{\var{m}.__doc__}.
942 Also test examples reachable from dict \code{\var{m}.__test__}, if it
943 exists and is not \code{None}. \code{\var{m}.__test__} maps
944 names (strings) to functions, classes and strings; function and class
945 docstrings are searched for examples; strings are searched directly,
946 as if they were docstrings.
948 Only docstrings attached to objects belonging to module \var{m} are
949 searched.
951 Return \samp{(\var{failure_count}, \var{test_count})}.
953 Optional argument \var{name} gives the name of the module; by default,
954 or if \code{None}, \code{\var{m}.__name__} is used.
956 Optional argument \var{exclude_empty} defaults to false. If true,
957 objects for which no doctests are found are excluded from consideration.
958 The default is a backward compatibility hack, so that code still
959 using \method{doctest.master.summarize()} in conjunction with
960 \function{testmod()} continues to get output for objects with no tests.
961 The \var{exclude_empty} argument to the newer \class{DocTestFinder}
962 constructor defaults to true.
964 Optional arguments \var{extraglobs}, \var{verbose}, \var{report},
965 \var{optionflags}, \var{raise_on_error}, and \var{globs} are the same as
966 for function \function{testfile()} above, except that \var{globs}
967 defaults to \code{\var{m}.__dict__}.
969 Optional argument \var{isprivate} specifies a function used to
970 determine whether a name is private. The default function treats
971 all names as public. \var{isprivate} can be set to
972 \code{doctest.is_private} to skip over names that are
973 private according to Python's underscore naming convention.
974 \deprecated{2.4}{\var{isprivate} was a stupid idea -- don't use it.
975 If you need to skip tests based on name, filter the list returned by
976 \code{DocTestFinder.find()} instead.}
978 \versionchanged[The parameter \var{optionflags} was added]{2.3}
980 \versionchanged[The parameters \var{extraglobs}, \var{raise_on_error}
981 and \var{exclude_empty} were added]{2.4}
982 \end{funcdesc}
984 There's also a function to run the doctests associated with a single object.
985 This function is provided for backward compatibility. There are no plans
986 to deprecate it, but it's rarely useful:
988 \begin{funcdesc}{run_docstring_examples}{f, globs\optional{,
989 verbose}\optional{, name}\optional{,
990 compileflags}\optional{, optionflags}}
992 Test examples associated with object \var{f}; for example, \var{f} may
993 be a module, function, or class object.
995 A shallow copy of dictionary argument \var{globs} is used for the
996 execution context.
998 Optional argument \var{name} is used in failure messages, and defaults
999 to \code{"NoName"}.
1001 If optional argument \var{verbose} is true, output is generated even
1002 if there are no failures. By default, output is generated only in case
1003 of an example failure.
1005 Optional argument \var{compileflags} gives the set of flags that should
1006 be used by the Python compiler when running the examples. By default, or
1007 if \code{None}, flags are deduced corresponding to the set of future
1008 features found in \var{globs}.
1010 Optional argument \var{optionflags} works as for function
1011 \function{testfile()} above.
1012 \end{funcdesc}
1014 \subsection{Unittest API\label{doctest-unittest-api}}
1016 As your collection of doctest'ed modules grows, you'll want a way to run
1017 all their doctests systematically. Prior to Python 2.4, \refmodule{doctest}
1018 had a barely documented \class{Tester} class that supplied a rudimentary
1019 way to combine doctests from multiple modules. \class{Tester} was feeble,
1020 and in practice most serious Python testing frameworks build on the
1021 \refmodule{unittest} module, which supplies many flexible ways to combine
1022 tests from multiple sources. So, in Python 2.4, \refmodule{doctest}'s
1023 \class{Tester} class is deprecated, and \refmodule{doctest} provides two
1024 functions that can be used to create \refmodule{unittest} test suites from
1025 modules and text files containing doctests. These test suites can then be
1026 run using \refmodule{unittest} test runners:
1028 \begin{verbatim}
1029 import unittest
1030 import doctest
1031 import my_module_with_doctests, and_another
1033 suite = unittest.TestSuite()
1034 for mod in my_module_with_doctests, and_another:
1035 suite.addTest(doctest.DocTestSuite(mod))
1036 runner = unittest.TextTestRunner()
1037 runner.run(suite)
1038 \end{verbatim}
1040 There are two main functions for creating \class{\refmodule{unittest}.TestSuite}
1041 instances from text files and modules with doctests:
1043 \begin{funcdesc}{DocFileSuite}{*paths, **kw}
1044 Convert doctest tests from one or more text files to a
1045 \class{\refmodule{unittest}.TestSuite}.
1047 The returned \class{\refmodule{unittest}.TestSuite} is to be run by the
1048 unittest framework and runs the interactive examples in each file. If an
1049 example in any file fails, then the synthesized unit test fails, and a
1050 \exception{failureException} exception is raised showing the name of the
1051 file containing the test and a (sometimes approximate) line number.
1053 Pass one or more paths (as strings) to text files to be examined.
1055 Options may be provided as keyword arguments:
1057 Optional argument \var{module_relative} specifies how
1058 the filenames in \var{paths} should be interpreted:
1060 \begin{itemize}
1061 \item If \var{module_relative} is \code{True} (the default), then
1062 each filename specifies an OS-independent module-relative
1063 path. By default, this path is relative to the calling
1064 module's directory; but if the \var{package} argument is
1065 specified, then it is relative to that package. To ensure
1066 OS-independence, each filename should use \code{/} characters
1067 to separate path segments, and may not be an absolute path
1068 (i.e., it may not begin with \code{/}).
1069 \item If \var{module_relative} is \code{False}, then each filename
1070 specifies an OS-specific path. The path may be absolute or
1071 relative; relative paths are resolved with respect to the
1072 current working directory.
1073 \end{itemize}
1075 Optional argument \var{package} is a Python package or the name
1076 of a Python package whose directory should be used as the base
1077 directory for module-relative filenames. If no package is
1078 specified, then the calling module's directory is used as the base
1079 directory for module-relative filenames. It is an error to specify
1080 \var{package} if \var{module_relative} is \code{False}.
1082 Optional argument \var{setUp} specifies a set-up function for
1083 the test suite. This is called before running the tests in each
1084 file. The \var{setUp} function will be passed a \class{DocTest}
1085 object. The setUp function can access the test globals as the
1086 \var{globs} attribute of the test passed.
1088 Optional argument \var{tearDown} specifies a tear-down function
1089 for the test suite. This is called after running the tests in each
1090 file. The \var{tearDown} function will be passed a \class{DocTest}
1091 object. The setUp function can access the test globals as the
1092 \var{globs} attribute of the test passed.
1094 Optional argument \var{globs} is a dictionary containing the
1095 initial global variables for the tests. A new copy of this
1096 dictionary is created for each test. By default, \var{globs} is
1097 a new empty dictionary.
1099 Optional argument \var{optionflags} specifies the default
1100 doctest options for the tests, created by or-ing together
1101 individual option flags. See section~\ref{doctest-options}.
1102 See function \function{set_unittest_reportflags()} below for
1103 a better way to set reporting options.
1105 Optional argument \var{parser} specifies a \class{DocTestParser} (or
1106 subclass) that should be used to extract tests from the files. It
1107 defaults to a normal parser (i.e., \code{\class{DocTestParser}()}).
1109 \versionadded{2.4}
1110 \end{funcdesc}
1112 \begin{funcdesc}{DocTestSuite}{\optional{module}\optional{,
1113 globs}\optional{, extraglobs}\optional{,
1114 test_finder}\optional{, setUp}\optional{,
1115 tearDown}\optional{, checker}}
1116 Convert doctest tests for a module to a
1117 \class{\refmodule{unittest}.TestSuite}.
1119 The returned \class{\refmodule{unittest}.TestSuite} is to be run by the
1120 unittest framework and runs each doctest in the module. If any of the
1121 doctests fail, then the synthesized unit test fails, and a
1122 \exception{failureException} exception is raised showing the name of the
1123 file containing the test and a (sometimes approximate) line number.
1125 Optional argument \var{module} provides the module to be tested. It
1126 can be a module object or a (possibly dotted) module name. If not
1127 specified, the module calling this function is used.
1129 Optional argument \var{globs} is a dictionary containing the
1130 initial global variables for the tests. A new copy of this
1131 dictionary is created for each test. By default, \var{globs} is
1132 a new empty dictionary.
1134 Optional argument \var{extraglobs} specifies an extra set of
1135 global variables, which is merged into \var{globs}. By default, no
1136 extra globals are used.
1138 Optional argument \var{test_finder} is the \class{DocTestFinder}
1139 object (or a drop-in replacement) that is used to extract doctests
1140 from the module.
1142 Optional arguments \var{setUp}, \var{tearDown}, and \var{optionflags}
1143 are the same as for function \function{DocFileSuite()} above.
1145 \versionadded{2.3}
1147 \versionchanged[The parameters \var{globs}, \var{extraglobs},
1148 \var{test_finder}, \var{setUp}, \var{tearDown}, and
1149 \var{optionflags} were added; this function now uses the same search
1150 technique as \function{testmod()}]{2.4}
1151 \end{funcdesc}
1153 Under the covers, \function{DocTestSuite()} creates a
1154 \class{\refmodule{unittest}.TestSuite} out of \class{doctest.DocTestCase}
1155 instances, and \class{DocTestCase} is a subclass of
1156 \class{\refmodule{unittest}.TestCase}. \class{DocTestCase} isn't documented
1157 here (it's an internal detail), but studying its code can answer questions
1158 about the exact details of \refmodule{unittest} integration.
1160 Similarly, \function{DocFileSuite()} creates a
1161 \class{\refmodule{unittest}.TestSuite} out of \class{doctest.DocFileCase}
1162 instances, and \class{DocFileCase} is a subclass of \class{DocTestCase}.
1164 So both ways of creating a \class{\refmodule{unittest}.TestSuite} run
1165 instances of \class{DocTestCase}. This is important for a subtle reason:
1166 when you run \refmodule{doctest} functions yourself, you can control the
1167 \refmodule{doctest} options in use directly, by passing option flags to
1168 \refmodule{doctest} functions. However, if you're writing a
1169 \refmodule{unittest} framework, \refmodule{unittest} ultimately controls
1170 when and how tests get run. The framework author typically wants to
1171 control \refmodule{doctest} reporting options (perhaps, e.g., specified by
1172 command line options), but there's no way to pass options through
1173 \refmodule{unittest} to \refmodule{doctest} test runners.
1175 For this reason, \refmodule{doctest} also supports a notion of
1176 \refmodule{doctest} reporting flags specific to \refmodule{unittest}
1177 support, via this function:
1179 \begin{funcdesc}{set_unittest_reportflags}{flags}
1180 Set the \refmodule{doctest} reporting flags to use.
1182 Argument \var{flags} or's together option flags. See
1183 section~\ref{doctest-options}. Only "reporting flags" can be used.
1185 This is a module-global setting, and affects all future doctests run by
1186 module \refmodule{unittest}: the \method{runTest()} method of
1187 \class{DocTestCase} looks at the option flags specified for the test case
1188 when the \class{DocTestCase} instance was constructed. If no reporting
1189 flags were specified (which is the typical and expected case),
1190 \refmodule{doctest}'s \refmodule{unittest} reporting flags are or'ed into
1191 the option flags, and the option flags so augmented are passed to the
1192 \class{DocTestRunner} instance created to run the doctest. If any
1193 reporting flags were specified when the \class{DocTestCase} instance was
1194 constructed, \refmodule{doctest}'s \refmodule{unittest} reporting flags
1195 are ignored.
1197 The value of the \refmodule{unittest} reporting flags in effect before the
1198 function was called is returned by the function.
1200 \versionadded{2.4}
1201 \end{funcdesc}
1204 \subsection{Advanced API\label{doctest-advanced-api}}
1206 The basic API is a simple wrapper that's intended to make doctest easy
1207 to use. It is fairly flexible, and should meet most users' needs;
1208 however, if you require more fine-grained control over testing, or
1209 wish to extend doctest's capabilities, then you should use the
1210 advanced API.
1212 The advanced API revolves around two container classes, which are used
1213 to store the interactive examples extracted from doctest cases:
1215 \begin{itemize}
1216 \item \class{Example}: A single python statement, paired with its
1217 expected output.
1218 \item \class{DocTest}: A collection of \class{Example}s, typically
1219 extracted from a single docstring or text file.
1220 \end{itemize}
1222 Additional processing classes are defined to find, parse, and run, and
1223 check doctest examples:
1225 \begin{itemize}
1226 \item \class{DocTestFinder}: Finds all docstrings in a given module,
1227 and uses a \class{DocTestParser} to create a \class{DocTest}
1228 from every docstring that contains interactive examples.
1229 \item \class{DocTestParser}: Creates a \class{DocTest} object from
1230 a string (such as an object's docstring).
1231 \item \class{DocTestRunner}: Executes the examples in a
1232 \class{DocTest}, and uses an \class{OutputChecker} to verify
1233 their output.
1234 \item \class{OutputChecker}: Compares the actual output from a
1235 doctest example with the expected output, and decides whether
1236 they match.
1237 \end{itemize}
1239 The relationships among these processing classes are summarized in the
1240 following diagram:
1242 \begin{verbatim}
1243 list of:
1244 +------+ +---------+
1245 |module| --DocTestFinder-> | DocTest | --DocTestRunner-> results
1246 +------+ | ^ +---------+ | ^ (printed)
1247 | | | Example | | |
1248 v | | ... | v |
1249 DocTestParser | Example | OutputChecker
1250 +---------+
1251 \end{verbatim}
1253 \subsubsection{DocTest Objects\label{doctest-DocTest}}
1254 \begin{classdesc}{DocTest}{examples, globs, name, filename, lineno,
1255 docstring}
1256 A collection of doctest examples that should be run in a single
1257 namespace. The constructor arguments are used to initialize the
1258 member variables of the same names.
1259 \versionadded{2.4}
1260 \end{classdesc}
1262 \class{DocTest} defines the following member variables. They are
1263 initialized by the constructor, and should not be modified directly.
1265 \begin{memberdesc}{examples}
1266 A list of \class{Example} objects encoding the individual
1267 interactive Python examples that should be run by this test.
1268 \end{memberdesc}
1270 \begin{memberdesc}{globs}
1271 The namespace (aka globals) that the examples should be run in.
1272 This is a dictionary mapping names to values. Any changes to the
1273 namespace made by the examples (such as binding new variables)
1274 will be reflected in \member{globs} after the test is run.
1275 \end{memberdesc}
1277 \begin{memberdesc}{name}
1278 A string name identifying the \class{DocTest}. Typically, this is
1279 the name of the object or file that the test was extracted from.
1280 \end{memberdesc}
1282 \begin{memberdesc}{filename}
1283 The name of the file that this \class{DocTest} was extracted from;
1284 or \code{None} if the filename is unknown, or if the
1285 \class{DocTest} was not extracted from a file.
1286 \end{memberdesc}
1288 \begin{memberdesc}{lineno}
1289 The line number within \member{filename} where this
1290 \class{DocTest} begins, or \code{None} if the line number is
1291 unavailable. This line number is zero-based with respect to the
1292 beginning of the file.
1293 \end{memberdesc}
1295 \begin{memberdesc}{docstring}
1296 The string that the test was extracted from, or `None` if the
1297 string is unavailable, or if the test was not extracted from a
1298 string.
1299 \end{memberdesc}
1301 \subsubsection{Example Objects\label{doctest-Example}}
1302 \begin{classdesc}{Example}{source, want\optional{,
1303 exc_msg}\optional{, lineno}\optional{,
1304 indent}\optional{, options}}
1305 A single interactive example, consisting of a Python statement and
1306 its expected output. The constructor arguments are used to
1307 initialize the member variables of the same names.
1308 \versionadded{2.4}
1309 \end{classdesc}
1311 \class{Example} defines the following member variables. They are
1312 initialized by the constructor, and should not be modified directly.
1314 \begin{memberdesc}{source}
1315 A string containing the example's source code. This source code
1316 consists of a single Python statement, and always ends with a
1317 newline; the constructor adds a newline when necessary.
1318 \end{memberdesc}
1320 \begin{memberdesc}{want}
1321 The expected output from running the example's source code (either
1322 from stdout, or a traceback in case of exception). \member{want}
1323 ends with a newline unless no output is expected, in which case
1324 it's an empty string. The constructor adds a newline when
1325 necessary.
1326 \end{memberdesc}
1328 \begin{memberdesc}{exc_msg}
1329 The exception message generated by the example, if the example is
1330 expected to generate an exception; or \code{None} if it is not
1331 expected to generate an exception. This exception message is
1332 compared against the return value of
1333 \function{traceback.format_exception_only()}. \member{exc_msg}
1334 ends with a newline unless it's \code{None}. The constructor adds
1335 a newline if needed.
1336 \end{memberdesc}
1338 \begin{memberdesc}{lineno}
1339 The line number within the string containing this example where
1340 the example begins. This line number is zero-based with respect
1341 to the beginning of the containing string.
1342 \end{memberdesc}
1344 \begin{memberdesc}{indent}
1345 The example's indentation in the containing string, i.e., the
1346 number of space characters that precede the example's first
1347 prompt.
1348 \end{memberdesc}
1350 \begin{memberdesc}{options}
1351 A dictionary mapping from option flags to \code{True} or
1352 \code{False}, which is used to override default options for this
1353 example. Any option flags not contained in this dictionary are
1354 left at their default value (as specified by the
1355 \class{DocTestRunner}'s \member{optionflags}).
1356 By default, no options are set.
1357 \end{memberdesc}
1359 \subsubsection{DocTestFinder objects\label{doctest-DocTestFinder}}
1360 \begin{classdesc}{DocTestFinder}{\optional{verbose}\optional{,
1361 parser}\optional{, recurse}\optional{,
1362 exclude_empty}}
1363 A processing class used to extract the \class{DocTest}s that are
1364 relevant to a given object, from its docstring and the docstrings
1365 of its contained objects. \class{DocTest}s can currently be
1366 extracted from the following object types: modules, functions,
1367 classes, methods, staticmethods, classmethods, and properties.
1369 The optional argument \var{verbose} can be used to display the
1370 objects searched by the finder. It defaults to \code{False} (no
1371 output).
1373 The optional argument \var{parser} specifies the
1374 \class{DocTestParser} object (or a drop-in replacement) that is
1375 used to extract doctests from docstrings.
1377 If the optional argument \var{recurse} is false, then
1378 \method{DocTestFinder.find()} will only examine the given object,
1379 and not any contained objects.
1381 If the optional argument \var{exclude_empty} is false, then
1382 \method{DocTestFinder.find()} will include tests for objects with
1383 empty docstrings.
1385 \versionadded{2.4}
1386 \end{classdesc}
1388 \class{DocTestFinder} defines the following method:
1390 \begin{methoddesc}{find}{obj\optional{, name}\optional{,
1391 module}\optional{, globs}\optional{, extraglobs}}
1392 Return a list of the \class{DocTest}s that are defined by
1393 \var{obj}'s docstring, or by any of its contained objects'
1394 docstrings.
1396 The optional argument \var{name} specifies the object's name; this
1397 name will be used to construct names for the returned
1398 \class{DocTest}s. If \var{name} is not specified, then
1399 \code{\var{obj}.__name__} is used.
1401 The optional parameter \var{module} is the module that contains
1402 the given object. If the module is not specified or is None, then
1403 the test finder will attempt to automatically determine the
1404 correct module. The object's module is used:
1406 \begin{itemize}
1407 \item As a default namespace, if \var{globs} is not specified.
1408 \item To prevent the DocTestFinder from extracting DocTests
1409 from objects that are imported from other modules. (Contained
1410 objects with modules other than \var{module} are ignored.)
1411 \item To find the name of the file containing the object.
1412 \item To help find the line number of the object within its file.
1413 \end{itemize}
1415 If \var{module} is \code{False}, no attempt to find the module
1416 will be made. This is obscure, of use mostly in testing doctest
1417 itself: if \var{module} is \code{False}, or is \code{None} but
1418 cannot be found automatically, then all objects are considered to
1419 belong to the (non-existent) module, so all contained objects will
1420 (recursively) be searched for doctests.
1422 The globals for each \class{DocTest} is formed by combining
1423 \var{globs} and \var{extraglobs} (bindings in \var{extraglobs}
1424 override bindings in \var{globs}). A new shallow copy of the globals
1425 dictionary is created for each \class{DocTest}. If \var{globs} is
1426 not specified, then it defaults to the module's \var{__dict__}, if
1427 specified, or \code{\{\}} otherwise. If \var{extraglobs} is not
1428 specified, then it defaults to \code{\{\}}.
1429 \end{methoddesc}
1431 \subsubsection{DocTestParser objects\label{doctest-DocTestParser}}
1432 \begin{classdesc}{DocTestParser}{}
1433 A processing class used to extract interactive examples from a
1434 string, and use them to create a \class{DocTest} object.
1435 \versionadded{2.4}
1436 \end{classdesc}
1438 \class{DocTestParser} defines the following methods:
1440 \begin{methoddesc}{get_doctest}{string, globs, name, filename, lineno}
1441 Extract all doctest examples from the given string, and collect
1442 them into a \class{DocTest} object.
1444 \var{globs}, \var{name}, \var{filename}, and \var{lineno} are
1445 attributes for the new \class{DocTest} object. See the
1446 documentation for \class{DocTest} for more information.
1447 \end{methoddesc}
1449 \begin{methoddesc}{get_examples}{string\optional{, name}}
1450 Extract all doctest examples from the given string, and return
1451 them as a list of \class{Example} objects. Line numbers are
1452 0-based. The optional argument \var{name} is a name identifying
1453 this string, and is only used for error messages.
1454 \end{methoddesc}
1456 \begin{methoddesc}{parse}{string\optional{, name}}
1457 Divide the given string into examples and intervening text, and
1458 return them as a list of alternating \class{Example}s and strings.
1459 Line numbers for the \class{Example}s are 0-based. The optional
1460 argument \var{name} is a name identifying this string, and is only
1461 used for error messages.
1462 \end{methoddesc}
1464 \subsubsection{DocTestRunner objects\label{doctest-DocTestRunner}}
1465 \begin{classdesc}{DocTestRunner}{\optional{checker}\optional{,
1466 verbose}\optional{, optionflags}}
1467 A processing class used to execute and verify the interactive
1468 examples in a \class{DocTest}.
1470 The comparison between expected outputs and actual outputs is done
1471 by an \class{OutputChecker}. This comparison may be customized
1472 with a number of option flags; see section~\ref{doctest-options}
1473 for more information. If the option flags are insufficient, then
1474 the comparison may also be customized by passing a subclass of
1475 \class{OutputChecker} to the constructor.
1477 The test runner's display output can be controlled in two ways.
1478 First, an output function can be passed to
1479 \method{TestRunner.run()}; this function will be called with
1480 strings that should be displayed. It defaults to
1481 \code{sys.stdout.write}. If capturing the output is not
1482 sufficient, then the display output can be also customized by
1483 subclassing DocTestRunner, and overriding the methods
1484 \method{report_start}, \method{report_success},
1485 \method{report_unexpected_exception}, and \method{report_failure}.
1487 The optional keyword argument \var{checker} specifies the
1488 \class{OutputChecker} object (or drop-in replacement) that should
1489 be used to compare the expected outputs to the actual outputs of
1490 doctest examples.
1492 The optional keyword argument \var{verbose} controls the
1493 \class{DocTestRunner}'s verbosity. If \var{verbose} is
1494 \code{True}, then information is printed about each example, as it
1495 is run. If \var{verbose} is \code{False}, then only failures are
1496 printed. If \var{verbose} is unspecified, or \code{None}, then
1497 verbose output is used iff the command-line switch \programopt{-v}
1498 is used.
1500 The optional keyword argument \var{optionflags} can be used to
1501 control how the test runner compares expected output to actual
1502 output, and how it displays failures. For more information, see
1503 section~\ref{doctest-options}.
1505 \versionadded{2.4}
1506 \end{classdesc}
1508 \class{DocTestParser} defines the following methods:
1510 \begin{methoddesc}{report_start}{out, test, example}
1511 Report that the test runner is about to process the given example.
1512 This method is provided to allow subclasses of
1513 \class{DocTestRunner} to customize their output; it should not be
1514 called directly.
1516 \var{example} is the example about to be processed. \var{test} is
1517 the test containing \var{example}. \var{out} is the output
1518 function that was passed to \method{DocTestRunner.run()}.
1519 \end{methoddesc}
1521 \begin{methoddesc}{report_success}{out, test, example, got}
1522 Report that the given example ran successfully. This method is
1523 provided to allow subclasses of \class{DocTestRunner} to customize
1524 their output; it should not be called directly.
1526 \var{example} is the example about to be processed. \var{got} is
1527 the actual output from the example. \var{test} is the test
1528 containing \var{example}. \var{out} is the output function that
1529 was passed to \method{DocTestRunner.run()}.
1530 \end{methoddesc}
1532 \begin{methoddesc}{report_failure}{out, test, example, got}
1533 Report that the given example failed. This method is provided to
1534 allow subclasses of \class{DocTestRunner} to customize their
1535 output; it should not be called directly.
1537 \var{example} is the example about to be processed. \var{got} is
1538 the actual output from the example. \var{test} is the test
1539 containing \var{example}. \var{out} is the output function that
1540 was passed to \method{DocTestRunner.run()}.
1541 \end{methoddesc}
1543 \begin{methoddesc}{report_unexpected_exception}{out, test, example, exc_info}
1544 Report that the given example raised an unexpected exception.
1545 This method is provided to allow subclasses of
1546 \class{DocTestRunner} to customize their output; it should not be
1547 called directly.
1549 \var{example} is the example about to be processed.
1550 \var{exc_info} is a tuple containing information about the
1551 unexpected exception (as returned by \function{sys.exc_info()}).
1552 \var{test} is the test containing \var{example}. \var{out} is the
1553 output function that was passed to \method{DocTestRunner.run()}.
1554 \end{methoddesc}
1556 \begin{methoddesc}{run}{test\optional{, compileflags}\optional{,
1557 out}\optional{, clear_globs}}
1558 Run the examples in \var{test} (a \class{DocTest} object), and
1559 display the results using the writer function \var{out}.
1561 The examples are run in the namespace \code{test.globs}. If
1562 \var{clear_globs} is true (the default), then this namespace will
1563 be cleared after the test runs, to help with garbage collection.
1564 If you would like to examine the namespace after the test
1565 completes, then use \var{clear_globs=False}.
1567 \var{compileflags} gives the set of flags that should be used by
1568 the Python compiler when running the examples. If not specified,
1569 then it will default to the set of future-import flags that apply
1570 to \var{globs}.
1572 The output of each example is checked using the
1573 \class{DocTestRunner}'s output checker, and the results are
1574 formatted by the \method{DocTestRunner.report_*} methods.
1575 \end{methoddesc}
1577 \begin{methoddesc}{summarize}{\optional{verbose}}
1578 Print a summary of all the test cases that have been run by this
1579 DocTestRunner, and return a tuple \samp{(\var{failure_count},
1580 \var{test_count})}.
1582 The optional \var{verbose} argument controls how detailed the
1583 summary is. If the verbosity is not specified, then the
1584 \class{DocTestRunner}'s verbosity is used.
1585 \end{methoddesc}
1587 \subsubsection{OutputChecker objects\label{doctest-OutputChecker}}
1589 \begin{classdesc}{OutputChecker}{}
1590 A class used to check the whether the actual output from a doctest
1591 example matches the expected output. \class{OutputChecker}
1592 defines two methods: \method{check_output}, which compares a given
1593 pair of outputs, and returns true if they match; and
1594 \method{output_difference}, which returns a string describing the
1595 differences between two outputs.
1596 \versionadded{2.4}
1597 \end{classdesc}
1599 \class{OutputChecker} defines the following methods:
1601 \begin{methoddesc}{check_output}{want, got, optionflags}
1602 Return \code{True} iff the actual output from an example
1603 (\var{got}) matches the expected output (\var{want}). These
1604 strings are always considered to match if they are identical; but
1605 depending on what option flags the test runner is using, several
1606 non-exact match types are also possible. See
1607 section~\ref{doctest-options} for more information about option
1608 flags.
1609 \end{methoddesc}
1611 \begin{methoddesc}{output_difference}{example, got, optionflags}
1612 Return a string describing the differences between the expected
1613 output for a given example (\var{example}) and the actual output
1614 (\var{got}). \var{optionflags} is the set of option flags used to
1615 compare \var{want} and \var{got}.
1616 \end{methoddesc}
1618 \subsection{Debugging\label{doctest-debugging}}
1620 Doctest provides several mechanisms for debugging doctest examples:
1622 \begin{itemize}
1623 \item Several functions convert doctests to executable Python
1624 programs, which can be run under the Python debugger, \refmodule{pdb}.
1625 \item The \class{DebugRunner} class is a subclass of
1626 \class{DocTestRunner} that raises an exception for the first
1627 failing example, containing information about that example.
1628 This information can be used to perform post-mortem debugging on
1629 the example.
1630 \item The \refmodule{unittest} cases generated by \function{DocTestSuite()}
1631 support the \method{debug()} method defined by
1632 \class{\refmodule{unittest}.TestCase}.
1633 \item You can add a call to \function{\refmodule{pdb}.set_trace()} in a
1634 doctest example, and you'll drop into the Python debugger when that
1635 line is executed. Then you can inspect current values of variables,
1636 and so on. For example, suppose \file{a.py} contains just this
1637 module docstring:
1639 \begin{verbatim}
1641 >>> def f(x):
1642 ... g(x*2)
1643 >>> def g(x):
1644 ... print x+3
1645 ... import pdb; pdb.set_trace()
1646 >>> f(3)
1649 \end{verbatim}
1651 Then an interactive Python session may look like this:
1653 \begin{verbatim}
1654 >>> import a, doctest
1655 >>> doctest.testmod(a)
1656 --Return--
1657 > <doctest a[1]>(3)g()->None
1658 -> import pdb; pdb.set_trace()
1659 (Pdb) list
1660 1 def g(x):
1661 2 print x+3
1662 3 -> import pdb; pdb.set_trace()
1663 [EOF]
1664 (Pdb) print x
1666 (Pdb) step
1667 --Return--
1668 > <doctest a[0]>(2)f()->None
1669 -> g(x*2)
1670 (Pdb) list
1671 1 def f(x):
1672 2 -> g(x*2)
1673 [EOF]
1674 (Pdb) print x
1676 (Pdb) step
1677 --Return--
1678 > <doctest a[2]>(1)?()->None
1679 -> f(3)
1680 (Pdb) cont
1681 (0, 3)
1683 \end{verbatim}
1685 \versionchanged[The ability to use \code{\refmodule{pdb}.set_trace()}
1686 usefully inside doctests was added]{2.4}
1687 \end{itemize}
1689 Functions that convert doctests to Python code, and possibly run
1690 the synthesized code under the debugger:
1692 \begin{funcdesc}{script_from_examples}{s}
1693 Convert text with examples to a script.
1695 Argument \var{s} is a string containing doctest examples. The string
1696 is converted to a Python script, where doctest examples in \var{s}
1697 are converted to regular code, and everything else is converted to
1698 Python comments. The generated script is returned as a string.
1699 For example,
1701 \begin{verbatim}
1702 import doctest
1703 print doctest.script_from_examples(r"""
1704 Set x and y to 1 and 2.
1705 >>> x, y = 1, 2
1707 Print their sum:
1708 >>> print x+y
1710 """)
1711 \end{verbatim}
1713 displays:
1715 \begin{verbatim}
1716 # Set x and y to 1 and 2.
1717 x, y = 1, 2
1719 # Print their sum:
1720 print x+y
1721 # Expected:
1722 ## 3
1723 \end{verbatim}
1725 This function is used internally by other functions (see below), but
1726 can also be useful when you want to transform an interactive Python
1727 session into a Python script.
1729 \versionadded{2.4}
1730 \end{funcdesc}
1732 \begin{funcdesc}{testsource}{module, name}
1733 Convert the doctest for an object to a script.
1735 Argument \var{module} is a module object, or dotted name of a module,
1736 containing the object whose doctests are of interest. Argument
1737 \var{name} is the name (within the module) of the object with the
1738 doctests of interest. The result is a string, containing the
1739 object's docstring converted to a Python script, as described for
1740 \function{script_from_examples()} above. For example, if module
1741 \file{a.py} contains a top-level function \function{f()}, then
1743 \begin{verbatim}
1744 import a, doctest
1745 print doctest.testsource(a, "a.f")
1746 \end{verbatim}
1748 prints a script version of function \function{f()}'s docstring,
1749 with doctests converted to code, and the rest placed in comments.
1751 \versionadded{2.3}
1752 \end{funcdesc}
1754 \begin{funcdesc}{debug}{module, name\optional{, pm}}
1755 Debug the doctests for an object.
1757 The \var{module} and \var{name} arguments are the same as for function
1758 \function{testsource()} above. The synthesized Python script for the
1759 named object's docstring is written to a temporary file, and then that
1760 file is run under the control of the Python debugger, \refmodule{pdb}.
1762 A shallow copy of \code{\var{module}.__dict__} is used for both local
1763 and global execution context.
1765 Optional argument \var{pm} controls whether post-mortem debugging is
1766 used. If \var{pm} has a true value, the script file is run directly, and
1767 the debugger gets involved only if the script terminates via raising an
1768 unhandled exception. If it does, then post-mortem debugging is invoked,
1769 via \code{\refmodule{pdb}.post_mortem()}, passing the traceback object
1770 from the unhandled exception. If \var{pm} is not specified, or is false,
1771 the script is run under the debugger from the start, via passing an
1772 appropriate \function{execfile()} call to \code{\refmodule{pdb}.run()}.
1774 \versionadded{2.3}
1776 \versionchanged[The \var{pm} argument was added]{2.4}
1777 \end{funcdesc}
1779 \begin{funcdesc}{debug_src}{src\optional{, pm}\optional{, globs}}
1780 Debug the doctests in a string.
1782 This is like function \function{debug()} above, except that
1783 a string containing doctest examples is specified directly, via
1784 the \var{src} argument.
1786 Optional argument \var{pm} has the same meaning as in function
1787 \function{debug()} above.
1789 Optional argument \var{globs} gives a dictionary to use as both
1790 local and global execution context. If not specified, or \code{None},
1791 an empty dictionary is used. If specified, a shallow copy of the
1792 dictionary is used.
1794 \versionadded{2.4}
1795 \end{funcdesc}
1797 The \class{DebugRunner} class, and the special exceptions it may raise,
1798 are of most interest to testing framework authors, and will only be
1799 sketched here. See the source code, and especially \class{DebugRunner}'s
1800 docstring (which is a doctest!) for more details:
1802 \begin{classdesc}{DebugRunner}{\optional{checker}\optional{,
1803 verbose}\optional{, optionflags}}
1805 A subclass of \class{DocTestRunner} that raises an exception as
1806 soon as a failure is encountered. If an unexpected exception
1807 occurs, an \exception{UnexpectedException} exception is raised,
1808 containing the test, the example, and the original exception. If
1809 the output doesn't match, then a \exception{DocTestFailure}
1810 exception is raised, containing the test, the example, and the
1811 actual output.
1813 For information about the constructor parameters and methods, see
1814 the documentation for \class{DocTestRunner} in
1815 section~\ref{doctest-advanced-api}.
1816 \end{classdesc}
1818 There are two exceptions that may be raised by \class{DebugRunner}
1819 instances:
1821 \begin{excclassdesc}{DocTestFailure}{test, example, got}
1822 An exception thrown by \class{DocTestRunner} to signal that a
1823 doctest example's actual output did not match its expected output.
1824 The constructor arguments are used to initialize the member
1825 variables of the same names.
1826 \end{excclassdesc}
1827 \exception{DocTestFailure} defines the following member variables:
1828 \begin{memberdesc}{test}
1829 The \class{DocTest} object that was being run when the example failed.
1830 \end{memberdesc}
1831 \begin{memberdesc}{example}
1832 The \class{Example} that failed.
1833 \end{memberdesc}
1834 \begin{memberdesc}{got}
1835 The example's actual output.
1836 \end{memberdesc}
1838 \begin{excclassdesc}{UnexpectedException}{test, example, exc_info}
1839 An exception thrown by \class{DocTestRunner} to signal that a
1840 doctest example raised an unexpected exception. The constructor
1841 arguments are used to initialize the member variables of the same
1842 names.
1843 \end{excclassdesc}
1844 \exception{UnexpectedException} defines the following member variables:
1845 \begin{memberdesc}{test}
1846 The \class{DocTest} object that was being run when the example failed.
1847 \end{memberdesc}
1848 \begin{memberdesc}{example}
1849 The \class{Example} that failed.
1850 \end{memberdesc}
1851 \begin{memberdesc}{exc_info}
1852 A tuple containing information about the unexpected exception, as
1853 returned by \function{sys.exc_info()}.
1854 \end{memberdesc}
1856 \subsection{Soapbox\label{doctest-soapbox}}
1858 As mentioned in the introduction, \refmodule{doctest} has grown to have
1859 three primary uses:
1861 \begin{enumerate}
1862 \item Checking examples in docstrings.
1863 \item Regression testing.
1864 \item Executable documentation / literate testing.
1865 \end{enumerate}
1867 These uses have different requirements, and it is important to
1868 distinguish them. In particular, filling your docstrings with obscure
1869 test cases makes for bad documentation.
1871 When writing a docstring, choose docstring examples with care.
1872 There's an art to this that needs to be learned---it may not be
1873 natural at first. Examples should add genuine value to the
1874 documentation. A good example can often be worth many words.
1875 If done with care, the examples will be invaluable for your users, and
1876 will pay back the time it takes to collect them many times over as the
1877 years go by and things change. I'm still amazed at how often one of
1878 my \refmodule{doctest} examples stops working after a "harmless"
1879 change.
1881 Doctest also makes an excellent tool for regression testing, especially if
1882 you don't skimp on explanatory text. By interleaving prose and examples,
1883 it becomes much easier to keep track of what's actually being tested, and
1884 why. When a test fails, good prose can make it much easier to figure out
1885 what the problem is, and how it should be fixed. It's true that you could
1886 write extensive comments in code-based testing, but few programmers do.
1887 Many have found that using doctest approaches instead leads to much clearer
1888 tests. Perhaps this is simply because doctest makes writing prose a little
1889 easier than writing code, while writing comments in code is a little
1890 harder. I think it goes deeper than just that: the natural attitude
1891 when writing a doctest-based test is that you want to explain the fine
1892 points of your software, and illustrate them with examples. This in
1893 turn naturally leads to test files that start with the simplest features,
1894 and logically progress to complications and edge cases. A coherent
1895 narrative is the result, instead of a collection of isolated functions
1896 that test isolated bits of functionality seemingly at random. It's
1897 a different attitude, and produces different results, blurring the
1898 distinction between testing and explaining.
1900 Regression testing is best confined to dedicated objects or files. There
1901 are several options for organizing tests:
1903 \begin{itemize}
1904 \item Write text files containing test cases as interactive examples,
1905 and test the files using \function{testfile()} or
1906 \function{DocFileSuite()}. This is recommended, although is
1907 easiest to do for new projects, designed from the start to use
1908 doctest.
1909 \item Define functions named \code{_regrtest_\textit{topic}} that
1910 consist of single docstrings, containing test cases for the
1911 named topics. These functions can be included in the same file
1912 as the module, or separated out into a separate test file.
1913 \item Define a \code{__test__} dictionary mapping from regression test
1914 topics to docstrings containing test cases.
1915 \end{itemize}