blob: cea570bdbb688cb49d170ac61c55f0b5fb784443 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001:mod:`doctest` --- Test interactive Python examples
2===================================================
3
4.. module:: doctest
5 :synopsis: Test pieces of code within docstrings.
6.. moduleauthor:: Tim Peters <tim@python.org>
7.. sectionauthor:: Tim Peters <tim@python.org>
8.. sectionauthor:: Moshe Zadka <moshez@debian.org>
9.. sectionauthor:: Edward Loper <edloper@users.sourceforge.net>
10
11
12The :mod:`doctest` module searches for pieces of text that look like interactive
13Python sessions, and then executes those sessions to verify that they work
14exactly as shown. There are several common ways to use doctest:
15
16* To check that a module's docstrings are up-to-date by verifying that all
17 interactive examples still work as documented.
18
19* To perform regression testing by verifying that interactive examples from a
20 test file or a test object work as expected.
21
22* To write tutorial documentation for a package, liberally illustrated with
23 input-output examples. Depending on whether the examples or the expository text
24 are emphasized, this has the flavor of "literate testing" or "executable
25 documentation".
26
27Here's a complete but small example module::
28
29 """
30 This is the "example" module.
31
32 The example module supplies one function, factorial(). For example,
33
34 >>> factorial(5)
35 120
36 """
37
38 def factorial(n):
39 """Return the factorial of n, an exact integer >= 0.
40
Georg Brandl116aa622007-08-15 14:28:22 +000041 >>> [factorial(n) for n in range(6)]
42 [1, 1, 2, 6, 24, 120]
Georg Brandl116aa622007-08-15 14:28:22 +000043 >>> factorial(30)
Georg Brandl5c106642007-11-29 17:41:05 +000044 265252859812191058636308480000000
Georg Brandl116aa622007-08-15 14:28:22 +000045 >>> factorial(-1)
46 Traceback (most recent call last):
47 ...
48 ValueError: n must be >= 0
49
50 Factorials of floats are OK, but the float must be an exact integer:
51 >>> factorial(30.1)
52 Traceback (most recent call last):
53 ...
54 ValueError: n must be exact integer
55 >>> factorial(30.0)
Georg Brandl5c106642007-11-29 17:41:05 +000056 265252859812191058636308480000000
Georg Brandl116aa622007-08-15 14:28:22 +000057
58 It must also not be ridiculously large:
59 >>> factorial(1e100)
60 Traceback (most recent call last):
61 ...
62 OverflowError: n too large
63 """
64
Georg Brandl116aa622007-08-15 14:28:22 +000065 import math
66 if not n >= 0:
67 raise ValueError("n must be >= 0")
68 if math.floor(n) != n:
69 raise ValueError("n must be exact integer")
70 if n+1 == n: # catch a value like 1e300
71 raise OverflowError("n too large")
72 result = 1
73 factor = 2
74 while factor <= n:
75 result *= factor
76 factor += 1
77 return result
78
Georg Brandl116aa622007-08-15 14:28:22 +000079
80 if __name__ == "__main__":
Guido van Rossum04110fb2007-08-24 16:32:05 +000081 import doctest
82 doctest.testmod()
Georg Brandl116aa622007-08-15 14:28:22 +000083
84If you run :file:`example.py` directly from the command line, :mod:`doctest`
85works its magic::
86
87 $ python example.py
88 $
89
90There's no output! That's normal, and it means all the examples worked. Pass
91:option:`-v` to the script, and :mod:`doctest` prints a detailed log of what
92it's trying, and prints a summary at the end::
93
94 $ python example.py -v
95 Trying:
96 factorial(5)
97 Expecting:
98 120
99 ok
100 Trying:
101 [factorial(n) for n in range(6)]
102 Expecting:
103 [1, 1, 2, 6, 24, 120]
104 ok
Georg Brandl116aa622007-08-15 14:28:22 +0000105
106And so on, eventually ending with::
107
108 Trying:
109 factorial(1e100)
110 Expecting:
111 Traceback (most recent call last):
112 ...
113 OverflowError: n too large
114 ok
Georg Brandl116aa622007-08-15 14:28:22 +0000115 2 items passed all tests:
116 1 tests in __main__
117 8 tests in __main__.factorial
Guido van Rossum04110fb2007-08-24 16:32:05 +0000118 9 tests in 2 items.
Georg Brandl116aa622007-08-15 14:28:22 +0000119 9 passed and 0 failed.
120 Test passed.
121 $
122
123That's all you need to know to start making productive use of :mod:`doctest`!
124Jump in. The following sections provide full details. Note that there are many
125examples of doctests in the standard Python test suite and libraries.
126Especially useful examples can be found in the standard test file
127:file:`Lib/test/test_doctest.py`.
128
129
130.. _doctest-simple-testmod:
131
132Simple Usage: Checking Examples in Docstrings
133---------------------------------------------
134
135The simplest way to start using doctest (but not necessarily the way you'll
136continue to do it) is to end each module :mod:`M` with::
137
Guido van Rossum04110fb2007-08-24 16:32:05 +0000138 if __name__ == "__main__":
Georg Brandl116aa622007-08-15 14:28:22 +0000139 import doctest
140 doctest.testmod()
141
Georg Brandl116aa622007-08-15 14:28:22 +0000142:mod:`doctest` then examines docstrings in module :mod:`M`.
143
144Running the module as a script causes the examples in the docstrings to get
145executed and verified::
146
147 python M.py
148
149This won't display anything unless an example fails, in which case the failing
150example(s) and the cause(s) of the failure(s) are printed to stdout, and the
151final line of output is ``***Test Failed*** N failures.``, where *N* is the
152number of examples that failed.
153
154Run it with the :option:`-v` switch instead::
155
156 python M.py -v
157
158and a detailed report of all examples tried is printed to standard output, along
159with assorted summaries at the end.
160
161You can force verbose mode by passing ``verbose=True`` to :func:`testmod`, or
162prohibit it by passing ``verbose=False``. In either of those cases,
163``sys.argv`` is not examined by :func:`testmod` (so passing :option:`-v` or not
164has no effect).
165
Georg Brandl31835852008-05-12 17:38:56 +0000166There is also a command line shortcut for running :func:`testmod`. You can
167instruct the Python interpreter to run the doctest module directly from the
168standard library and pass the module name(s) on the command line::
Georg Brandl116aa622007-08-15 14:28:22 +0000169
170 python -m doctest -v example.py
171
172This will import :file:`example.py` as a standalone module and run
173:func:`testmod` on it. Note that this may not work correctly if the file is
174part of a package and imports other submodules from that package.
175
176For more information on :func:`testmod`, see section :ref:`doctest-basic-api`.
177
178
179.. _doctest-simple-testfile:
180
181Simple Usage: Checking Examples in a Text File
182----------------------------------------------
183
184Another simple application of doctest is testing interactive examples in a text
185file. This can be done with the :func:`testfile` function::
186
187 import doctest
188 doctest.testfile("example.txt")
189
190That short script executes and verifies any interactive Python examples
191contained in the file :file:`example.txt`. The file content is treated as if it
192were a single giant docstring; the file doesn't need to contain a Python
193program! For example, perhaps :file:`example.txt` contains this::
194
195 The ``example`` module
196 ======================
197
198 Using ``factorial``
199 -------------------
200
201 This is an example text file in reStructuredText format. First import
202 ``factorial`` from the ``example`` module:
203
204 >>> from example import factorial
205
206 Now use it:
207
208 >>> factorial(6)
209 120
210
211Running ``doctest.testfile("example.txt")`` then finds the error in this
212documentation::
213
214 File "./example.txt", line 14, in example.txt
215 Failed example:
216 factorial(6)
217 Expected:
218 120
219 Got:
220 720
221
222As with :func:`testmod`, :func:`testfile` won't display anything unless an
223example fails. If an example does fail, then the failing example(s) and the
224cause(s) of the failure(s) are printed to stdout, using the same format as
225:func:`testmod`.
226
227By default, :func:`testfile` looks for files in the calling module's directory.
228See section :ref:`doctest-basic-api` for a description of the optional arguments
229that can be used to tell it to look for files in other locations.
230
231Like :func:`testmod`, :func:`testfile`'s verbosity can be set with the
232:option:`-v` command-line switch or with the optional keyword argument
233*verbose*.
234
Georg Brandl31835852008-05-12 17:38:56 +0000235There is also a command line shortcut for running :func:`testfile`. You can
236instruct the Python interpreter to run the doctest module directly from the
237standard library and pass the file name(s) on the command line::
Georg Brandl116aa622007-08-15 14:28:22 +0000238
239 python -m doctest -v example.txt
240
241Because the file name does not end with :file:`.py`, :mod:`doctest` infers that
242it must be run with :func:`testfile`, not :func:`testmod`.
243
244For more information on :func:`testfile`, see section :ref:`doctest-basic-api`.
245
246
247.. _doctest-how-it-works:
248
249How It Works
250------------
251
252This section examines in detail how doctest works: which docstrings it looks at,
253how it finds interactive examples, what execution context it uses, how it
254handles exceptions, and how option flags can be used to control its behavior.
255This is the information that you need to know to write doctest examples; for
256information about actually running doctest on these examples, see the following
257sections.
258
259
260.. _doctest-which-docstrings:
261
262Which Docstrings Are Examined?
263^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
264
265The module docstring, and all function, class and method docstrings are
266searched. Objects imported into the module are not searched.
267
268In addition, if ``M.__test__`` exists and "is true", it must be a dict, and each
269entry maps a (string) name to a function object, class object, or string.
270Function and class object docstrings found from ``M.__test__`` are searched, and
271strings are treated as if they were docstrings. In output, a key ``K`` in
272``M.__test__`` appears with name ::
273
274 <name of M>.__test__.K
275
276Any classes found are recursively searched similarly, to test docstrings in
277their contained methods and nested classes.
278
Georg Brandl116aa622007-08-15 14:28:22 +0000279
280.. _doctest-finding-examples:
281
282How are Docstring Examples Recognized?
283^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
284
R. David Murray24d83872010-06-16 00:37:16 +0000285In most cases a copy-and-paste of an interactive console session works fine,
286but doctest isn't trying to do an exact emulation of any specific Python shell.
Georg Brandl116aa622007-08-15 14:28:22 +0000287
Georg Brandl116aa622007-08-15 14:28:22 +0000288::
289
290 >>> # comments are ignored
291 >>> x = 12
292 >>> x
293 12
294 >>> if x == 13:
Georg Brandl6911e3c2007-09-04 07:15:32 +0000295 ... print("yes")
Georg Brandl116aa622007-08-15 14:28:22 +0000296 ... else:
Georg Brandl6911e3c2007-09-04 07:15:32 +0000297 ... print("no")
298 ... print("NO")
299 ... print("NO!!!")
Georg Brandl116aa622007-08-15 14:28:22 +0000300 ...
301 no
302 NO
303 NO!!!
304 >>>
305
306Any expected output must immediately follow the final ``'>>> '`` or ``'... '``
307line containing the code, and the expected output (if any) extends to the next
308``'>>> '`` or all-whitespace line.
309
310The fine print:
311
312* Expected output cannot contain an all-whitespace line, since such a line is
313 taken to signal the end of expected output. If expected output does contain a
314 blank line, put ``<BLANKLINE>`` in your doctest example each place a blank line
315 is expected.
316
R. David Murray24d83872010-06-16 00:37:16 +0000317* All hard tab characters are expanded to spaces, using 8-column tab stops.
318 Tabs in output generated by the tested code are not modified. Because any
319 hard tabs in the sample output *are* expanded, this means that if the code
320 output includes hard tabs, the only way the doctest can pass is if the
321 :const:`NORMALIZE_WHITESPACE` option or directive is in effect.
322 Alternatively, the test can be rewritten to capture the output and compare it
323 to an expected value as part of the test. This handling of tabs in the
324 source was arrived at through trial and error, and has proven to be the least
325 error prone way of handling them. It is possible to use a different
326 algorithm for handling tabs by writing a custom :class:`DocTestParser` class.
327
Georg Brandl116aa622007-08-15 14:28:22 +0000328* Output to stdout is captured, but not output to stderr (exception tracebacks
329 are captured via a different means).
330
331* If you continue a line via backslashing in an interactive session, or for any
332 other reason use a backslash, you should use a raw docstring, which will
333 preserve your backslashes exactly as you type them::
334
335 >>> def f(x):
336 ... r'''Backslashes in a raw docstring: m\n'''
Georg Brandl6911e3c2007-09-04 07:15:32 +0000337 >>> print(f.__doc__)
Georg Brandl116aa622007-08-15 14:28:22 +0000338 Backslashes in a raw docstring: m\n
339
340 Otherwise, the backslash will be interpreted as part of the string. For example,
341 the "\\" above would be interpreted as a newline character. Alternatively, you
342 can double each backslash in the doctest version (and not use a raw string)::
343
344 >>> def f(x):
345 ... '''Backslashes in a raw docstring: m\\n'''
Georg Brandl6911e3c2007-09-04 07:15:32 +0000346 >>> print(f.__doc__)
Georg Brandl116aa622007-08-15 14:28:22 +0000347 Backslashes in a raw docstring: m\n
348
349* The starting column doesn't matter::
350
351 >>> assert "Easy!"
352 >>> import math
353 >>> math.floor(1.9)
R. David Murray4c380592009-11-23 03:14:51 +0000354 1
Georg Brandl116aa622007-08-15 14:28:22 +0000355
356 and as many leading whitespace characters are stripped from the expected output
357 as appeared in the initial ``'>>> '`` line that started the example.
358
359
360.. _doctest-execution-context:
361
362What's the Execution Context?
363^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
364
365By default, each time :mod:`doctest` finds a docstring to test, it uses a
366*shallow copy* of :mod:`M`'s globals, so that running tests doesn't change the
367module's real globals, and so that one test in :mod:`M` can't leave behind
368crumbs that accidentally allow another test to work. This means examples can
369freely use any names defined at top-level in :mod:`M`, and names defined earlier
370in the docstring being run. Examples cannot see names defined in other
371docstrings.
372
373You can force use of your own dict as the execution context by passing
374``globs=your_dict`` to :func:`testmod` or :func:`testfile` instead.
375
376
377.. _doctest-exceptions:
378
379What About Exceptions?
380^^^^^^^^^^^^^^^^^^^^^^
381
382No problem, provided that the traceback is the only output produced by the
383example: just paste in the traceback. [#]_ Since tracebacks contain details
384that are likely to change rapidly (for example, exact file paths and line
385numbers), this is one case where doctest works hard to be flexible in what it
386accepts.
387
388Simple example::
389
390 >>> [1, 2, 3].remove(42)
391 Traceback (most recent call last):
392 File "<stdin>", line 1, in ?
393 ValueError: list.remove(x): x not in list
394
395That doctest succeeds if :exc:`ValueError` is raised, with the ``list.remove(x):
396x not in list`` detail as shown.
397
398The expected output for an exception must start with a traceback header, which
399may be either of the following two lines, indented the same as the first line of
400the example::
401
402 Traceback (most recent call last):
403 Traceback (innermost last):
404
405The traceback header is followed by an optional traceback stack, whose contents
406are ignored by doctest. The traceback stack is typically omitted, or copied
407verbatim from an interactive session.
408
409The traceback stack is followed by the most interesting part: the line(s)
410containing the exception type and detail. This is usually the last line of a
411traceback, but can extend across multiple lines if the exception has a
412multi-line detail::
413
414 >>> raise ValueError('multi\n line\ndetail')
415 Traceback (most recent call last):
416 File "<stdin>", line 1, in ?
417 ValueError: multi
418 line
419 detail
420
421The last three lines (starting with :exc:`ValueError`) are compared against the
422exception's type and detail, and the rest are ignored.
423
424Best practice is to omit the traceback stack, unless it adds significant
425documentation value to the example. So the last example is probably better as::
426
427 >>> raise ValueError('multi\n line\ndetail')
428 Traceback (most recent call last):
429 ...
430 ValueError: multi
431 line
432 detail
433
434Note that tracebacks are treated very specially. In particular, in the
435rewritten example, the use of ``...`` is independent of doctest's
436:const:`ELLIPSIS` option. The ellipsis in that example could be left out, or
437could just as well be three (or three hundred) commas or digits, or an indented
438transcript of a Monty Python skit.
439
440Some details you should read once, but won't need to remember:
441
442* Doctest can't guess whether your expected output came from an exception
443 traceback or from ordinary printing. So, e.g., an example that expects
444 ``ValueError: 42 is prime`` will pass whether :exc:`ValueError` is actually
445 raised or if the example merely prints that traceback text. In practice,
446 ordinary output rarely begins with a traceback header line, so this doesn't
447 create real problems.
448
449* Each line of the traceback stack (if present) must be indented further than
450 the first line of the example, *or* start with a non-alphanumeric character.
451 The first line following the traceback header indented the same and starting
452 with an alphanumeric is taken to be the start of the exception detail. Of
453 course this does the right thing for genuine tracebacks.
454
455* When the :const:`IGNORE_EXCEPTION_DETAIL` doctest option is is specified,
456 everything following the leftmost colon is ignored.
457
458* The interactive shell omits the traceback header line for some
459 :exc:`SyntaxError`\ s. But doctest uses the traceback header line to
460 distinguish exceptions from non-exceptions. So in the rare case where you need
461 to test a :exc:`SyntaxError` that omits the traceback header, you will need to
462 manually add the traceback header line to your test example.
463
464* For some :exc:`SyntaxError`\ s, Python displays the character position of the
465 syntax error, using a ``^`` marker::
466
467 >>> 1 1
468 File "<stdin>", line 1
469 1 1
470 ^
471 SyntaxError: invalid syntax
472
473 Since the lines showing the position of the error come before the exception type
474 and detail, they are not checked by doctest. For example, the following test
475 would pass, even though it puts the ``^`` marker in the wrong location::
476
477 >>> 1 1
478 Traceback (most recent call last):
479 File "<stdin>", line 1
480 1 1
481 ^
482 SyntaxError: invalid syntax
483
Georg Brandl116aa622007-08-15 14:28:22 +0000484
485.. _doctest-options:
486
487Option Flags and Directives
488^^^^^^^^^^^^^^^^^^^^^^^^^^^
489
490A number of option flags control various aspects of doctest's behavior.
491Symbolic names for the flags are supplied as module constants, which can be
492or'ed together and passed to various functions. The names can also be used in
493doctest directives (see below).
494
495The first group of options define test semantics, controlling aspects of how
496doctest decides whether actual output matches an example's expected output:
497
498
499.. data:: DONT_ACCEPT_TRUE_FOR_1
500
501 By default, if an expected output block contains just ``1``, an actual output
502 block containing just ``1`` or just ``True`` is considered to be a match, and
503 similarly for ``0`` versus ``False``. When :const:`DONT_ACCEPT_TRUE_FOR_1` is
504 specified, neither substitution is allowed. The default behavior caters to that
505 Python changed the return type of many functions from integer to boolean;
506 doctests expecting "little integer" output still work in these cases. This
507 option will probably go away, but not for several years.
508
509
510.. data:: DONT_ACCEPT_BLANKLINE
511
512 By default, if an expected output block contains a line containing only the
513 string ``<BLANKLINE>``, then that line will match a blank line in the actual
514 output. Because a genuinely blank line delimits the expected output, this is
515 the only way to communicate that a blank line is expected. When
516 :const:`DONT_ACCEPT_BLANKLINE` is specified, this substitution is not allowed.
517
518
519.. data:: NORMALIZE_WHITESPACE
520
521 When specified, all sequences of whitespace (blanks and newlines) are treated as
522 equal. Any sequence of whitespace within the expected output will match any
523 sequence of whitespace within the actual output. By default, whitespace must
524 match exactly. :const:`NORMALIZE_WHITESPACE` is especially useful when a line of
525 expected output is very long, and you want to wrap it across multiple lines in
526 your source.
527
528
529.. data:: ELLIPSIS
530
531 When specified, an ellipsis marker (``...``) in the expected output can match
532 any substring in the actual output. This includes substrings that span line
533 boundaries, and empty substrings, so it's best to keep usage of this simple.
534 Complicated uses can lead to the same kinds of "oops, it matched too much!"
535 surprises that ``.*`` is prone to in regular expressions.
536
537
538.. data:: IGNORE_EXCEPTION_DETAIL
539
540 When specified, an example that expects an exception passes if an exception of
541 the expected type is raised, even if the exception detail does not match. For
542 example, an example expecting ``ValueError: 42`` will pass if the actual
543 exception raised is ``ValueError: 3*14``, but will fail, e.g., if
544 :exc:`TypeError` is raised.
545
546 Note that a similar effect can be obtained using :const:`ELLIPSIS`, and
547 :const:`IGNORE_EXCEPTION_DETAIL` may go away when Python releases prior to 2.4
548 become uninteresting. Until then, :const:`IGNORE_EXCEPTION_DETAIL` is the only
549 clear way to write a doctest that doesn't care about the exception detail yet
550 continues to pass under Python releases prior to 2.4 (doctest directives appear
551 to be comments to them). For example, ::
552
553 >>> (1, 2)[3] = 'moo' #doctest: +IGNORE_EXCEPTION_DETAIL
554 Traceback (most recent call last):
555 File "<stdin>", line 1, in ?
556 TypeError: object doesn't support item assignment
557
558 passes under Python 2.4 and Python 2.3. The detail changed in 2.4, to say "does
559 not" instead of "doesn't".
560
561
562.. data:: SKIP
563
564 When specified, do not run the example at all. This can be useful in contexts
565 where doctest examples serve as both documentation and test cases, and an
566 example should be included for documentation purposes, but should not be
567 checked. E.g., the example's output might be random; or the example might
568 depend on resources which would be unavailable to the test driver.
569
570 The SKIP flag can also be used for temporarily "commenting out" examples.
571
572
573.. data:: COMPARISON_FLAGS
574
575 A bitmask or'ing together all the comparison flags above.
576
577The second group of options controls how test failures are reported:
578
579
580.. data:: REPORT_UDIFF
581
582 When specified, failures that involve multi-line expected and actual outputs are
583 displayed using a unified diff.
584
585
586.. data:: REPORT_CDIFF
587
588 When specified, failures that involve multi-line expected and actual outputs
589 will be displayed using a context diff.
590
591
592.. data:: REPORT_NDIFF
593
594 When specified, differences are computed by ``difflib.Differ``, using the same
595 algorithm as the popular :file:`ndiff.py` utility. This is the only method that
596 marks differences within lines as well as across lines. For example, if a line
597 of expected output contains digit ``1`` where actual output contains letter
598 ``l``, a line is inserted with a caret marking the mismatching column positions.
599
600
601.. data:: REPORT_ONLY_FIRST_FAILURE
602
603 When specified, display the first failing example in each doctest, but suppress
604 output for all remaining examples. This will prevent doctest from reporting
605 correct examples that break because of earlier failures; but it might also hide
606 incorrect examples that fail independently of the first failure. When
607 :const:`REPORT_ONLY_FIRST_FAILURE` is specified, the remaining examples are
608 still run, and still count towards the total number of failures reported; only
609 the output is suppressed.
610
611
612.. data:: REPORTING_FLAGS
613
614 A bitmask or'ing together all the reporting flags above.
615
616"Doctest directives" may be used to modify the option flags for individual
617examples. Doctest directives are expressed as a special Python comment
618following an example's source code:
619
620.. productionlist:: doctest
621 directive: "#" "doctest:" `directive_options`
622 directive_options: `directive_option` ("," `directive_option`)\*
623 directive_option: `on_or_off` `directive_option_name`
624 on_or_off: "+" \| "-"
625 directive_option_name: "DONT_ACCEPT_BLANKLINE" \| "NORMALIZE_WHITESPACE" \| ...
626
627Whitespace is not allowed between the ``+`` or ``-`` and the directive option
628name. The directive option name can be any of the option flag names explained
629above.
630
631An example's doctest directives modify doctest's behavior for that single
632example. Use ``+`` to enable the named behavior, or ``-`` to disable it.
633
634For example, this test passes::
635
Georg Brandl6911e3c2007-09-04 07:15:32 +0000636 >>> print(range(20)) #doctest: +NORMALIZE_WHITESPACE
Georg Brandl116aa622007-08-15 14:28:22 +0000637 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
638 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
639
640Without the directive it would fail, both because the actual output doesn't have
641two blanks before the single-digit list elements, and because the actual output
642is on a single line. This test also passes, and also requires a directive to do
643so::
644
Georg Brandl6911e3c2007-09-04 07:15:32 +0000645 >>> print(range(20)) # doctest: +ELLIPSIS
Georg Brandl116aa622007-08-15 14:28:22 +0000646 [0, 1, ..., 18, 19]
647
648Multiple directives can be used on a single physical line, separated by commas::
649
Georg Brandl6911e3c2007-09-04 07:15:32 +0000650 >>> print(range(20)) # doctest: +ELLIPSIS, +NORMALIZE_WHITESPACE
Georg Brandl116aa622007-08-15 14:28:22 +0000651 [0, 1, ..., 18, 19]
652
653If multiple directive comments are used for a single example, then they are
654combined::
655
Georg Brandl6911e3c2007-09-04 07:15:32 +0000656 >>> print(range(20)) # doctest: +ELLIPSIS
Georg Brandl116aa622007-08-15 14:28:22 +0000657 ... # doctest: +NORMALIZE_WHITESPACE
658 [0, 1, ..., 18, 19]
659
660As the previous example shows, you can add ``...`` lines to your example
661containing only directives. This can be useful when an example is too long for
662a directive to comfortably fit on the same line::
663
Georg Brandl6911e3c2007-09-04 07:15:32 +0000664 >>> print(range(5) + range(10,20) + range(30,40) + range(50,60))
Georg Brandl116aa622007-08-15 14:28:22 +0000665 ... # doctest: +ELLIPSIS
666 [0, ..., 4, 10, ..., 19, 30, ..., 39, 50, ..., 59]
667
668Note that since all options are disabled by default, and directives apply only
669to the example they appear in, enabling options (via ``+`` in a directive) is
670usually the only meaningful choice. However, option flags can also be passed to
671functions that run doctests, establishing different defaults. In such cases,
672disabling an option via ``-`` in a directive can be useful.
673
Georg Brandl116aa622007-08-15 14:28:22 +0000674
675There's also a way to register new option flag names, although this isn't useful
676unless you intend to extend :mod:`doctest` internals via subclassing:
677
678
679.. function:: register_optionflag(name)
680
681 Create a new option flag with a given name, and return the new flag's integer
682 value. :func:`register_optionflag` can be used when subclassing
683 :class:`OutputChecker` or :class:`DocTestRunner` to create new options that are
684 supported by your subclasses. :func:`register_optionflag` should always be
685 called using the following idiom::
686
687 MY_FLAG = register_optionflag('MY_FLAG')
688
Georg Brandl116aa622007-08-15 14:28:22 +0000689
690.. _doctest-warnings:
691
692Warnings
693^^^^^^^^
694
695:mod:`doctest` is serious about requiring exact matches in expected output. If
696even a single character doesn't match, the test fails. This will probably
697surprise you a few times, as you learn exactly what Python does and doesn't
698guarantee about output. For example, when printing a dict, Python doesn't
699guarantee that the key-value pairs will be printed in any particular order, so a
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000700test like ::
Georg Brandl116aa622007-08-15 14:28:22 +0000701
702 >>> foo()
703 {"Hermione": "hippogryph", "Harry": "broomstick"}
704
705is vulnerable! One workaround is to do ::
706
707 >>> foo() == {"Hermione": "hippogryph", "Harry": "broomstick"}
708 True
709
710instead. Another is to do ::
711
Ezio Melotti2befd9a2009-09-13 08:08:32 +0000712 >>> d = sorted(foo().items())
Georg Brandl116aa622007-08-15 14:28:22 +0000713 >>> d
714 [('Harry', 'broomstick'), ('Hermione', 'hippogryph')]
715
716There are others, but you get the idea.
717
718Another bad idea is to print things that embed an object address, like ::
719
720 >>> id(1.0) # certain to fail some of the time
721 7948648
722 >>> class C: pass
723 >>> C() # the default repr() for instances embeds an address
724 <__main__.C instance at 0x00AC18F0>
725
726The :const:`ELLIPSIS` directive gives a nice approach for the last example::
727
728 >>> C() #doctest: +ELLIPSIS
729 <__main__.C instance at 0x...>
730
731Floating-point numbers are also subject to small output variations across
732platforms, because Python defers to the platform C library for float formatting,
733and C libraries vary widely in quality here. ::
734
735 >>> 1./7 # risky
736 0.14285714285714285
Georg Brandl6911e3c2007-09-04 07:15:32 +0000737 >>> print(1./7) # safer
Georg Brandl116aa622007-08-15 14:28:22 +0000738 0.142857142857
Georg Brandl6911e3c2007-09-04 07:15:32 +0000739 >>> print(round(1./7, 6)) # much safer
Georg Brandl116aa622007-08-15 14:28:22 +0000740 0.142857
741
742Numbers of the form ``I/2.**J`` are safe across all platforms, and I often
743contrive doctest examples to produce numbers of that form::
744
745 >>> 3./4 # utterly safe
746 0.75
747
748Simple fractions are also easier for people to understand, and that makes for
749better documentation.
750
751
752.. _doctest-basic-api:
753
754Basic API
755---------
756
757The functions :func:`testmod` and :func:`testfile` provide a simple interface to
758doctest that should be sufficient for most basic uses. For a less formal
759introduction to these two functions, see sections :ref:`doctest-simple-testmod`
760and :ref:`doctest-simple-testfile`.
761
762
Georg Brandlc2a4f4f2009-04-10 09:03:43 +0000763.. function:: testfile(filename, module_relative=True, name=None, package=None, globs=None, verbose=None, report=True, optionflags=0, extraglobs=None, raise_on_error=False, parser=DocTestParser(), encoding=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000764
765 All arguments except *filename* are optional, and should be specified in keyword
766 form.
767
768 Test examples in the file named *filename*. Return ``(failure_count,
769 test_count)``.
770
771 Optional argument *module_relative* specifies how the filename should be
772 interpreted:
773
774 * If *module_relative* is ``True`` (the default), then *filename* specifies an
775 OS-independent module-relative path. By default, this path is relative to the
776 calling module's directory; but if the *package* argument is specified, then it
777 is relative to that package. To ensure OS-independence, *filename* should use
778 ``/`` characters to separate path segments, and may not be an absolute path
779 (i.e., it may not begin with ``/``).
780
781 * If *module_relative* is ``False``, then *filename* specifies an OS-specific
782 path. The path may be absolute or relative; relative paths are resolved with
783 respect to the current working directory.
784
785 Optional argument *name* gives the name of the test; by default, or if ``None``,
786 ``os.path.basename(filename)`` is used.
787
788 Optional argument *package* is a Python package or the name of a Python package
789 whose directory should be used as the base directory for a module-relative
790 filename. If no package is specified, then the calling module's directory is
791 used as the base directory for module-relative filenames. It is an error to
792 specify *package* if *module_relative* is ``False``.
793
794 Optional argument *globs* gives a dict to be used as the globals when executing
795 examples. A new shallow copy of this dict is created for the doctest, so its
796 examples start with a clean slate. By default, or if ``None``, a new empty dict
797 is used.
798
799 Optional argument *extraglobs* gives a dict merged into the globals used to
800 execute examples. This works like :meth:`dict.update`: if *globs* and
801 *extraglobs* have a common key, the associated value in *extraglobs* appears in
802 the combined dict. By default, or if ``None``, no extra globals are used. This
803 is an advanced feature that allows parameterization of doctests. For example, a
804 doctest can be written for a base class, using a generic name for the class,
805 then reused to test any number of subclasses by passing an *extraglobs* dict
806 mapping the generic name to the subclass to be tested.
807
808 Optional argument *verbose* prints lots of stuff if true, and prints only
809 failures if false; by default, or if ``None``, it's true if and only if ``'-v'``
810 is in ``sys.argv``.
811
812 Optional argument *report* prints a summary at the end when true, else prints
813 nothing at the end. In verbose mode, the summary is detailed, else the summary
814 is very brief (in fact, empty if all tests passed).
815
816 Optional argument *optionflags* or's together option flags. See section
817 :ref:`doctest-options`.
818
819 Optional argument *raise_on_error* defaults to false. If true, an exception is
820 raised upon the first failure or unexpected exception in an example. This
821 allows failures to be post-mortem debugged. Default behavior is to continue
822 running examples.
823
824 Optional argument *parser* specifies a :class:`DocTestParser` (or subclass) that
825 should be used to extract tests from the files. It defaults to a normal parser
826 (i.e., ``DocTestParser()``).
827
828 Optional argument *encoding* specifies an encoding that should be used to
829 convert the file to unicode.
830
Georg Brandl116aa622007-08-15 14:28:22 +0000831
Georg Brandlc2a4f4f2009-04-10 09:03:43 +0000832.. function:: testmod(m=None, name=None, globs=None, verbose=None, report=True, optionflags=0, extraglobs=None, raise_on_error=False, exclude_empty=False)
Georg Brandl116aa622007-08-15 14:28:22 +0000833
834 All arguments are optional, and all except for *m* should be specified in
835 keyword form.
836
837 Test examples in docstrings in functions and classes reachable from module *m*
838 (or module :mod:`__main__` if *m* is not supplied or is ``None``), starting with
839 ``m.__doc__``.
840
841 Also test examples reachable from dict ``m.__test__``, if it exists and is not
842 ``None``. ``m.__test__`` maps names (strings) to functions, classes and
843 strings; function and class docstrings are searched for examples; strings are
844 searched directly, as if they were docstrings.
845
846 Only docstrings attached to objects belonging to module *m* are searched.
847
848 Return ``(failure_count, test_count)``.
849
850 Optional argument *name* gives the name of the module; by default, or if
851 ``None``, ``m.__name__`` is used.
852
853 Optional argument *exclude_empty* defaults to false. If true, objects for which
854 no doctests are found are excluded from consideration. The default is a backward
855 compatibility hack, so that code still using :meth:`doctest.master.summarize` in
856 conjunction with :func:`testmod` continues to get output for objects with no
857 tests. The *exclude_empty* argument to the newer :class:`DocTestFinder`
858 constructor defaults to true.
859
860 Optional arguments *extraglobs*, *verbose*, *report*, *optionflags*,
861 *raise_on_error*, and *globs* are the same as for function :func:`testfile`
862 above, except that *globs* defaults to ``m.__dict__``.
863
Georg Brandl116aa622007-08-15 14:28:22 +0000864
865There's also a function to run the doctests associated with a single object.
866This function is provided for backward compatibility. There are no plans to
867deprecate it, but it's rarely useful:
868
869
Georg Brandlc2a4f4f2009-04-10 09:03:43 +0000870.. function:: run_docstring_examples(f, globs, verbose=False, name="NoName", compileflags=None, optionflags=0)
Georg Brandl116aa622007-08-15 14:28:22 +0000871
872 Test examples associated with object *f*; for example, *f* may be a module,
873 function, or class object.
874
875 A shallow copy of dictionary argument *globs* is used for the execution context.
876
877 Optional argument *name* is used in failure messages, and defaults to
878 ``"NoName"``.
879
880 If optional argument *verbose* is true, output is generated even if there are no
881 failures. By default, output is generated only in case of an example failure.
882
883 Optional argument *compileflags* gives the set of flags that should be used by
884 the Python compiler when running the examples. By default, or if ``None``,
885 flags are deduced corresponding to the set of future features found in *globs*.
886
887 Optional argument *optionflags* works as for function :func:`testfile` above.
888
889
890.. _doctest-unittest-api:
891
892Unittest API
893------------
894
895As your collection of doctest'ed modules grows, you'll want a way to run all
Georg Brandl31835852008-05-12 17:38:56 +0000896their doctests systematically. :mod:`doctest` provides two functions that can
897be used to create :mod:`unittest` test suites from modules and text files
898containing doctests. These test suites can then be run using :mod:`unittest`
899test runners::
Georg Brandl116aa622007-08-15 14:28:22 +0000900
901 import unittest
902 import doctest
903 import my_module_with_doctests, and_another
904
905 suite = unittest.TestSuite()
906 for mod in my_module_with_doctests, and_another:
907 suite.addTest(doctest.DocTestSuite(mod))
908 runner = unittest.TextTestRunner()
909 runner.run(suite)
910
911There are two main functions for creating :class:`unittest.TestSuite` instances
912from text files and modules with doctests:
913
914
Georg Brandlc2a4f4f2009-04-10 09:03:43 +0000915.. function:: DocFileSuite(*paths, module_relative=True, package=None, setUp=None, tearDown=None, globs=None, optionflags=0, parser=DocTestParser(), encoding=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000916
917 Convert doctest tests from one or more text files to a
918 :class:`unittest.TestSuite`.
919
920 The returned :class:`unittest.TestSuite` is to be run by the unittest framework
921 and runs the interactive examples in each file. If an example in any file
922 fails, then the synthesized unit test fails, and a :exc:`failureException`
923 exception is raised showing the name of the file containing the test and a
924 (sometimes approximate) line number.
925
926 Pass one or more paths (as strings) to text files to be examined.
927
928 Options may be provided as keyword arguments:
929
930 Optional argument *module_relative* specifies how the filenames in *paths*
931 should be interpreted:
932
Benjamin Petersond23f8222009-04-05 19:13:16 +0000933 * If *module_relative* is ``True`` (the default), then each filename in
934 *paths* specifies an OS-independent module-relative path. By default, this
935 path is relative to the calling module's directory; but if the *package*
936 argument is specified, then it is relative to that package. To ensure
937 OS-independence, each filename should use ``/`` characters to separate path
938 segments, and may not be an absolute path (i.e., it may not begin with
939 ``/``).
Georg Brandl116aa622007-08-15 14:28:22 +0000940
Benjamin Petersond23f8222009-04-05 19:13:16 +0000941 * If *module_relative* is ``False``, then each filename in *paths* specifies
942 an OS-specific path. The path may be absolute or relative; relative paths
943 are resolved with respect to the current working directory.
Georg Brandl116aa622007-08-15 14:28:22 +0000944
Benjamin Petersond23f8222009-04-05 19:13:16 +0000945 Optional argument *package* is a Python package or the name of a Python
946 package whose directory should be used as the base directory for
947 module-relative filenames in *paths*. If no package is specified, then the
948 calling module's directory is used as the base directory for module-relative
949 filenames. It is an error to specify *package* if *module_relative* is
950 ``False``.
Georg Brandl116aa622007-08-15 14:28:22 +0000951
Benjamin Petersond23f8222009-04-05 19:13:16 +0000952 Optional argument *setUp* specifies a set-up function for the test suite.
953 This is called before running the tests in each file. The *setUp* function
Georg Brandl116aa622007-08-15 14:28:22 +0000954 will be passed a :class:`DocTest` object. The setUp function can access the
955 test globals as the *globs* attribute of the test passed.
956
Benjamin Petersond23f8222009-04-05 19:13:16 +0000957 Optional argument *tearDown* specifies a tear-down function for the test
958 suite. This is called after running the tests in each file. The *tearDown*
959 function will be passed a :class:`DocTest` object. The setUp function can
960 access the test globals as the *globs* attribute of the test passed.
961
Georg Brandl116aa622007-08-15 14:28:22 +0000962 Optional argument *globs* is a dictionary containing the initial global
963 variables for the tests. A new copy of this dictionary is created for each
964 test. By default, *globs* is a new empty dictionary.
965
966 Optional argument *optionflags* specifies the default doctest options for the
967 tests, created by or-ing together individual option flags. See section
Benjamin Petersond23f8222009-04-05 19:13:16 +0000968 :ref:`doctest-options`. See function :func:`set_unittest_reportflags` below
969 for a better way to set reporting options.
Georg Brandl116aa622007-08-15 14:28:22 +0000970
Benjamin Petersond23f8222009-04-05 19:13:16 +0000971 Optional argument *parser* specifies a :class:`DocTestParser` (or subclass)
972 that should be used to extract tests from the files. It defaults to a normal
973 parser (i.e., ``DocTestParser()``).
Georg Brandl116aa622007-08-15 14:28:22 +0000974
975 Optional argument *encoding* specifies an encoding that should be used to
976 convert the file to unicode.
977
Georg Brandl55ac8f02007-09-01 13:51:09 +0000978 The global ``__file__`` is added to the globals provided to doctests loaded
979 from a text file using :func:`DocFileSuite`.
Georg Brandl116aa622007-08-15 14:28:22 +0000980
981
Georg Brandlc2a4f4f2009-04-10 09:03:43 +0000982.. function:: DocTestSuite(module=None, globs=None, extraglobs=None, test_finder=None, setUp=None, tearDown=None, checker=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000983
984 Convert doctest tests for a module to a :class:`unittest.TestSuite`.
985
986 The returned :class:`unittest.TestSuite` is to be run by the unittest framework
987 and runs each doctest in the module. If any of the doctests fail, then the
988 synthesized unit test fails, and a :exc:`failureException` exception is raised
989 showing the name of the file containing the test and a (sometimes approximate)
990 line number.
991
992 Optional argument *module* provides the module to be tested. It can be a module
993 object or a (possibly dotted) module name. If not specified, the module calling
994 this function is used.
995
996 Optional argument *globs* is a dictionary containing the initial global
997 variables for the tests. A new copy of this dictionary is created for each
998 test. By default, *globs* is a new empty dictionary.
999
1000 Optional argument *extraglobs* specifies an extra set of global variables, which
1001 is merged into *globs*. By default, no extra globals are used.
1002
1003 Optional argument *test_finder* is the :class:`DocTestFinder` object (or a
1004 drop-in replacement) that is used to extract doctests from the module.
1005
1006 Optional arguments *setUp*, *tearDown*, and *optionflags* are the same as for
1007 function :func:`DocFileSuite` above.
1008
Georg Brandl55ac8f02007-09-01 13:51:09 +00001009 This function uses the same search technique as :func:`testmod`.
Georg Brandl116aa622007-08-15 14:28:22 +00001010
Georg Brandl116aa622007-08-15 14:28:22 +00001011
1012Under the covers, :func:`DocTestSuite` creates a :class:`unittest.TestSuite` out
1013of :class:`doctest.DocTestCase` instances, and :class:`DocTestCase` is a
1014subclass of :class:`unittest.TestCase`. :class:`DocTestCase` isn't documented
1015here (it's an internal detail), but studying its code can answer questions about
1016the exact details of :mod:`unittest` integration.
1017
1018Similarly, :func:`DocFileSuite` creates a :class:`unittest.TestSuite` out of
1019:class:`doctest.DocFileCase` instances, and :class:`DocFileCase` is a subclass
1020of :class:`DocTestCase`.
1021
1022So both ways of creating a :class:`unittest.TestSuite` run instances of
1023:class:`DocTestCase`. This is important for a subtle reason: when you run
1024:mod:`doctest` functions yourself, you can control the :mod:`doctest` options in
1025use directly, by passing option flags to :mod:`doctest` functions. However, if
1026you're writing a :mod:`unittest` framework, :mod:`unittest` ultimately controls
1027when and how tests get run. The framework author typically wants to control
1028:mod:`doctest` reporting options (perhaps, e.g., specified by command line
1029options), but there's no way to pass options through :mod:`unittest` to
1030:mod:`doctest` test runners.
1031
1032For this reason, :mod:`doctest` also supports a notion of :mod:`doctest`
1033reporting flags specific to :mod:`unittest` support, via this function:
1034
1035
1036.. function:: set_unittest_reportflags(flags)
1037
1038 Set the :mod:`doctest` reporting flags to use.
1039
1040 Argument *flags* or's together option flags. See section
1041 :ref:`doctest-options`. Only "reporting flags" can be used.
1042
1043 This is a module-global setting, and affects all future doctests run by module
1044 :mod:`unittest`: the :meth:`runTest` method of :class:`DocTestCase` looks at
1045 the option flags specified for the test case when the :class:`DocTestCase`
1046 instance was constructed. If no reporting flags were specified (which is the
1047 typical and expected case), :mod:`doctest`'s :mod:`unittest` reporting flags are
1048 or'ed into the option flags, and the option flags so augmented are passed to the
1049 :class:`DocTestRunner` instance created to run the doctest. If any reporting
1050 flags were specified when the :class:`DocTestCase` instance was constructed,
1051 :mod:`doctest`'s :mod:`unittest` reporting flags are ignored.
1052
1053 The value of the :mod:`unittest` reporting flags in effect before the function
1054 was called is returned by the function.
1055
Georg Brandl116aa622007-08-15 14:28:22 +00001056
1057.. _doctest-advanced-api:
1058
1059Advanced API
1060------------
1061
1062The basic API is a simple wrapper that's intended to make doctest easy to use.
1063It is fairly flexible, and should meet most users' needs; however, if you
1064require more fine-grained control over testing, or wish to extend doctest's
1065capabilities, then you should use the advanced API.
1066
1067The advanced API revolves around two container classes, which are used to store
1068the interactive examples extracted from doctest cases:
1069
Ezio Melotti890c1932009-12-19 23:33:46 +00001070* :class:`Example`: A single Python :term:`statement`, paired with its expected
Christian Heimesd8654cf2007-12-02 15:22:16 +00001071 output.
Georg Brandl116aa622007-08-15 14:28:22 +00001072
1073* :class:`DocTest`: A collection of :class:`Example`\ s, typically extracted
1074 from a single docstring or text file.
1075
1076Additional processing classes are defined to find, parse, and run, and check
1077doctest examples:
1078
1079* :class:`DocTestFinder`: Finds all docstrings in a given module, and uses a
1080 :class:`DocTestParser` to create a :class:`DocTest` from every docstring that
1081 contains interactive examples.
1082
1083* :class:`DocTestParser`: Creates a :class:`DocTest` object from a string (such
1084 as an object's docstring).
1085
1086* :class:`DocTestRunner`: Executes the examples in a :class:`DocTest`, and uses
1087 an :class:`OutputChecker` to verify their output.
1088
1089* :class:`OutputChecker`: Compares the actual output from a doctest example with
1090 the expected output, and decides whether they match.
1091
1092The relationships among these processing classes are summarized in the following
1093diagram::
1094
1095 list of:
1096 +------+ +---------+
1097 |module| --DocTestFinder-> | DocTest | --DocTestRunner-> results
1098 +------+ | ^ +---------+ | ^ (printed)
1099 | | | Example | | |
1100 v | | ... | v |
1101 DocTestParser | Example | OutputChecker
1102 +---------+
1103
1104
1105.. _doctest-doctest:
1106
1107DocTest Objects
1108^^^^^^^^^^^^^^^
1109
1110
1111.. class:: DocTest(examples, globs, name, filename, lineno, docstring)
1112
1113 A collection of doctest examples that should be run in a single namespace. The
1114 constructor arguments are used to initialize the member variables of the same
1115 names.
1116
Georg Brandl116aa622007-08-15 14:28:22 +00001117
Benjamin Petersone41251e2008-04-25 01:59:09 +00001118 :class:`DocTest` defines the following member variables. They are initialized by
1119 the constructor, and should not be modified directly.
Georg Brandl116aa622007-08-15 14:28:22 +00001120
1121
Benjamin Petersone41251e2008-04-25 01:59:09 +00001122 .. attribute:: examples
Georg Brandl116aa622007-08-15 14:28:22 +00001123
Benjamin Petersone41251e2008-04-25 01:59:09 +00001124 A list of :class:`Example` objects encoding the individual interactive Python
1125 examples that should be run by this test.
Georg Brandl116aa622007-08-15 14:28:22 +00001126
1127
Benjamin Petersone41251e2008-04-25 01:59:09 +00001128 .. attribute:: globs
Georg Brandl116aa622007-08-15 14:28:22 +00001129
Benjamin Petersone41251e2008-04-25 01:59:09 +00001130 The namespace (aka globals) that the examples should be run in. This is a
1131 dictionary mapping names to values. Any changes to the namespace made by the
1132 examples (such as binding new variables) will be reflected in :attr:`globs`
1133 after the test is run.
Georg Brandl116aa622007-08-15 14:28:22 +00001134
1135
Benjamin Petersone41251e2008-04-25 01:59:09 +00001136 .. attribute:: name
Georg Brandl116aa622007-08-15 14:28:22 +00001137
Benjamin Petersone41251e2008-04-25 01:59:09 +00001138 A string name identifying the :class:`DocTest`. Typically, this is the name
1139 of the object or file that the test was extracted from.
Georg Brandl116aa622007-08-15 14:28:22 +00001140
1141
Benjamin Petersone41251e2008-04-25 01:59:09 +00001142 .. attribute:: filename
Georg Brandl116aa622007-08-15 14:28:22 +00001143
Benjamin Petersone41251e2008-04-25 01:59:09 +00001144 The name of the file that this :class:`DocTest` was extracted from; or
1145 ``None`` if the filename is unknown, or if the :class:`DocTest` was not
1146 extracted from a file.
Georg Brandl116aa622007-08-15 14:28:22 +00001147
1148
Benjamin Petersone41251e2008-04-25 01:59:09 +00001149 .. attribute:: lineno
Georg Brandl116aa622007-08-15 14:28:22 +00001150
Benjamin Petersone41251e2008-04-25 01:59:09 +00001151 The line number within :attr:`filename` where this :class:`DocTest` begins, or
1152 ``None`` if the line number is unavailable. This line number is zero-based
1153 with respect to the beginning of the file.
Georg Brandl116aa622007-08-15 14:28:22 +00001154
1155
Benjamin Petersone41251e2008-04-25 01:59:09 +00001156 .. attribute:: docstring
Georg Brandl116aa622007-08-15 14:28:22 +00001157
Benjamin Petersone41251e2008-04-25 01:59:09 +00001158 The string that the test was extracted from, or 'None' if the string is
1159 unavailable, or if the test was not extracted from a string.
Georg Brandl116aa622007-08-15 14:28:22 +00001160
1161
1162.. _doctest-example:
1163
1164Example Objects
1165^^^^^^^^^^^^^^^
1166
1167
Georg Brandlc2a4f4f2009-04-10 09:03:43 +00001168.. class:: Example(source, want, exc_msg=None, lineno=0, indent=0, options=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001169
1170 A single interactive example, consisting of a Python statement and its expected
1171 output. The constructor arguments are used to initialize the member variables
1172 of the same names.
1173
Georg Brandl116aa622007-08-15 14:28:22 +00001174
Benjamin Petersone41251e2008-04-25 01:59:09 +00001175 :class:`Example` defines the following member variables. They are initialized by
1176 the constructor, and should not be modified directly.
Georg Brandl116aa622007-08-15 14:28:22 +00001177
1178
Benjamin Petersone41251e2008-04-25 01:59:09 +00001179 .. attribute:: source
Georg Brandl116aa622007-08-15 14:28:22 +00001180
Benjamin Petersone41251e2008-04-25 01:59:09 +00001181 A string containing the example's source code. This source code consists of a
1182 single Python statement, and always ends with a newline; the constructor adds
1183 a newline when necessary.
Georg Brandl116aa622007-08-15 14:28:22 +00001184
1185
Benjamin Petersone41251e2008-04-25 01:59:09 +00001186 .. attribute:: want
Georg Brandl116aa622007-08-15 14:28:22 +00001187
Benjamin Petersone41251e2008-04-25 01:59:09 +00001188 The expected output from running the example's source code (either from
1189 stdout, or a traceback in case of exception). :attr:`want` ends with a
1190 newline unless no output is expected, in which case it's an empty string. The
1191 constructor adds a newline when necessary.
Georg Brandl116aa622007-08-15 14:28:22 +00001192
1193
Benjamin Petersone41251e2008-04-25 01:59:09 +00001194 .. attribute:: exc_msg
Georg Brandl116aa622007-08-15 14:28:22 +00001195
Benjamin Petersone41251e2008-04-25 01:59:09 +00001196 The exception message generated by the example, if the example is expected to
1197 generate an exception; or ``None`` if it is not expected to generate an
1198 exception. This exception message is compared against the return value of
1199 :func:`traceback.format_exception_only`. :attr:`exc_msg` ends with a newline
1200 unless it's ``None``. The constructor adds a newline if needed.
Georg Brandl116aa622007-08-15 14:28:22 +00001201
1202
Benjamin Petersone41251e2008-04-25 01:59:09 +00001203 .. attribute:: lineno
Georg Brandl116aa622007-08-15 14:28:22 +00001204
Benjamin Petersone41251e2008-04-25 01:59:09 +00001205 The line number within the string containing this example where the example
1206 begins. This line number is zero-based with respect to the beginning of the
1207 containing string.
Georg Brandl116aa622007-08-15 14:28:22 +00001208
1209
Benjamin Petersone41251e2008-04-25 01:59:09 +00001210 .. attribute:: indent
Georg Brandl116aa622007-08-15 14:28:22 +00001211
Benjamin Petersone41251e2008-04-25 01:59:09 +00001212 The example's indentation in the containing string, i.e., the number of space
1213 characters that precede the example's first prompt.
Georg Brandl116aa622007-08-15 14:28:22 +00001214
1215
Benjamin Petersone41251e2008-04-25 01:59:09 +00001216 .. attribute:: options
Georg Brandl116aa622007-08-15 14:28:22 +00001217
Benjamin Petersone41251e2008-04-25 01:59:09 +00001218 A dictionary mapping from option flags to ``True`` or ``False``, which is used
1219 to override default options for this example. Any option flags not contained
1220 in this dictionary are left at their default value (as specified by the
1221 :class:`DocTestRunner`'s :attr:`optionflags`). By default, no options are set.
Georg Brandl116aa622007-08-15 14:28:22 +00001222
1223
1224.. _doctest-doctestfinder:
1225
1226DocTestFinder objects
1227^^^^^^^^^^^^^^^^^^^^^
1228
1229
Georg Brandlc2a4f4f2009-04-10 09:03:43 +00001230.. class:: DocTestFinder(verbose=False, parser=DocTestParser(), recurse=True, exclude_empty=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001231
1232 A processing class used to extract the :class:`DocTest`\ s that are relevant to
1233 a given object, from its docstring and the docstrings of its contained objects.
1234 :class:`DocTest`\ s can currently be extracted from the following object types:
1235 modules, functions, classes, methods, staticmethods, classmethods, and
1236 properties.
1237
1238 The optional argument *verbose* can be used to display the objects searched by
1239 the finder. It defaults to ``False`` (no output).
1240
1241 The optional argument *parser* specifies the :class:`DocTestParser` object (or a
1242 drop-in replacement) that is used to extract doctests from docstrings.
1243
1244 If the optional argument *recurse* is false, then :meth:`DocTestFinder.find`
1245 will only examine the given object, and not any contained objects.
1246
1247 If the optional argument *exclude_empty* is false, then
1248 :meth:`DocTestFinder.find` will include tests for objects with empty docstrings.
1249
Georg Brandl116aa622007-08-15 14:28:22 +00001250
Benjamin Petersone41251e2008-04-25 01:59:09 +00001251 :class:`DocTestFinder` defines the following method:
Georg Brandl116aa622007-08-15 14:28:22 +00001252
1253
Benjamin Petersone41251e2008-04-25 01:59:09 +00001254 .. method:: find(obj[, name][, module][, globs][, extraglobs])
Georg Brandl116aa622007-08-15 14:28:22 +00001255
Benjamin Petersone41251e2008-04-25 01:59:09 +00001256 Return a list of the :class:`DocTest`\ s that are defined by *obj*'s
1257 docstring, or by any of its contained objects' docstrings.
Georg Brandl116aa622007-08-15 14:28:22 +00001258
Benjamin Petersone41251e2008-04-25 01:59:09 +00001259 The optional argument *name* specifies the object's name; this name will be
1260 used to construct names for the returned :class:`DocTest`\ s. If *name* is
1261 not specified, then ``obj.__name__`` is used.
Georg Brandl116aa622007-08-15 14:28:22 +00001262
Benjamin Petersone41251e2008-04-25 01:59:09 +00001263 The optional parameter *module* is the module that contains the given object.
1264 If the module is not specified or is None, then the test finder will attempt
1265 to automatically determine the correct module. The object's module is used:
Georg Brandl116aa622007-08-15 14:28:22 +00001266
Benjamin Petersone41251e2008-04-25 01:59:09 +00001267 * As a default namespace, if *globs* is not specified.
Georg Brandl116aa622007-08-15 14:28:22 +00001268
Benjamin Petersone41251e2008-04-25 01:59:09 +00001269 * To prevent the DocTestFinder from extracting DocTests from objects that are
1270 imported from other modules. (Contained objects with modules other than
1271 *module* are ignored.)
Georg Brandl116aa622007-08-15 14:28:22 +00001272
Benjamin Petersone41251e2008-04-25 01:59:09 +00001273 * To find the name of the file containing the object.
Georg Brandl116aa622007-08-15 14:28:22 +00001274
Benjamin Petersone41251e2008-04-25 01:59:09 +00001275 * To help find the line number of the object within its file.
Georg Brandl116aa622007-08-15 14:28:22 +00001276
Benjamin Petersone41251e2008-04-25 01:59:09 +00001277 If *module* is ``False``, no attempt to find the module will be made. This is
1278 obscure, of use mostly in testing doctest itself: if *module* is ``False``, or
1279 is ``None`` but cannot be found automatically, then all objects are considered
1280 to belong to the (non-existent) module, so all contained objects will
1281 (recursively) be searched for doctests.
Georg Brandl116aa622007-08-15 14:28:22 +00001282
Benjamin Petersone41251e2008-04-25 01:59:09 +00001283 The globals for each :class:`DocTest` is formed by combining *globs* and
1284 *extraglobs* (bindings in *extraglobs* override bindings in *globs*). A new
1285 shallow copy of the globals dictionary is created for each :class:`DocTest`.
1286 If *globs* is not specified, then it defaults to the module's *__dict__*, if
1287 specified, or ``{}`` otherwise. If *extraglobs* is not specified, then it
1288 defaults to ``{}``.
Georg Brandl116aa622007-08-15 14:28:22 +00001289
1290
1291.. _doctest-doctestparser:
1292
1293DocTestParser objects
1294^^^^^^^^^^^^^^^^^^^^^
1295
1296
1297.. class:: DocTestParser()
1298
1299 A processing class used to extract interactive examples from a string, and use
1300 them to create a :class:`DocTest` object.
1301
Georg Brandl116aa622007-08-15 14:28:22 +00001302
Benjamin Petersone41251e2008-04-25 01:59:09 +00001303 :class:`DocTestParser` defines the following methods:
Georg Brandl116aa622007-08-15 14:28:22 +00001304
1305
Benjamin Petersone41251e2008-04-25 01:59:09 +00001306 .. method:: get_doctest(string, globs, name, filename, lineno)
Georg Brandl116aa622007-08-15 14:28:22 +00001307
Benjamin Petersone41251e2008-04-25 01:59:09 +00001308 Extract all doctest examples from the given string, and collect them into a
1309 :class:`DocTest` object.
Georg Brandl116aa622007-08-15 14:28:22 +00001310
Benjamin Petersone41251e2008-04-25 01:59:09 +00001311 *globs*, *name*, *filename*, and *lineno* are attributes for the new
1312 :class:`DocTest` object. See the documentation for :class:`DocTest` for more
1313 information.
Georg Brandl116aa622007-08-15 14:28:22 +00001314
1315
Georg Brandlc2a4f4f2009-04-10 09:03:43 +00001316 .. method:: get_examples(string, name='<string>')
Georg Brandl116aa622007-08-15 14:28:22 +00001317
Benjamin Petersone41251e2008-04-25 01:59:09 +00001318 Extract all doctest examples from the given string, and return them as a list
1319 of :class:`Example` objects. Line numbers are 0-based. The optional argument
1320 *name* is a name identifying this string, and is only used for error messages.
Georg Brandl116aa622007-08-15 14:28:22 +00001321
1322
Georg Brandlc2a4f4f2009-04-10 09:03:43 +00001323 .. method:: parse(string, name='<string>')
Georg Brandl116aa622007-08-15 14:28:22 +00001324
Benjamin Petersone41251e2008-04-25 01:59:09 +00001325 Divide the given string into examples and intervening text, and return them as
1326 a list of alternating :class:`Example`\ s and strings. Line numbers for the
1327 :class:`Example`\ s are 0-based. The optional argument *name* is a name
1328 identifying this string, and is only used for error messages.
Georg Brandl116aa622007-08-15 14:28:22 +00001329
1330
1331.. _doctest-doctestrunner:
1332
1333DocTestRunner objects
1334^^^^^^^^^^^^^^^^^^^^^
1335
1336
Georg Brandlc2a4f4f2009-04-10 09:03:43 +00001337.. class:: DocTestRunner(checker=None, verbose=None, optionflags=0)
Georg Brandl116aa622007-08-15 14:28:22 +00001338
1339 A processing class used to execute and verify the interactive examples in a
1340 :class:`DocTest`.
1341
1342 The comparison between expected outputs and actual outputs is done by an
1343 :class:`OutputChecker`. This comparison may be customized with a number of
1344 option flags; see section :ref:`doctest-options` for more information. If the
1345 option flags are insufficient, then the comparison may also be customized by
1346 passing a subclass of :class:`OutputChecker` to the constructor.
1347
1348 The test runner's display output can be controlled in two ways. First, an output
1349 function can be passed to :meth:`TestRunner.run`; this function will be called
1350 with strings that should be displayed. It defaults to ``sys.stdout.write``. If
1351 capturing the output is not sufficient, then the display output can be also
1352 customized by subclassing DocTestRunner, and overriding the methods
1353 :meth:`report_start`, :meth:`report_success`,
1354 :meth:`report_unexpected_exception`, and :meth:`report_failure`.
1355
1356 The optional keyword argument *checker* specifies the :class:`OutputChecker`
1357 object (or drop-in replacement) that should be used to compare the expected
1358 outputs to the actual outputs of doctest examples.
1359
1360 The optional keyword argument *verbose* controls the :class:`DocTestRunner`'s
1361 verbosity. If *verbose* is ``True``, then information is printed about each
1362 example, as it is run. If *verbose* is ``False``, then only failures are
1363 printed. If *verbose* is unspecified, or ``None``, then verbose output is used
1364 iff the command-line switch :option:`-v` is used.
1365
1366 The optional keyword argument *optionflags* can be used to control how the test
1367 runner compares expected output to actual output, and how it displays failures.
1368 For more information, see section :ref:`doctest-options`.
1369
Georg Brandl116aa622007-08-15 14:28:22 +00001370
Benjamin Petersone41251e2008-04-25 01:59:09 +00001371 :class:`DocTestParser` defines the following methods:
Georg Brandl116aa622007-08-15 14:28:22 +00001372
1373
Benjamin Petersone41251e2008-04-25 01:59:09 +00001374 .. method:: report_start(out, test, example)
Georg Brandl116aa622007-08-15 14:28:22 +00001375
Benjamin Petersone41251e2008-04-25 01:59:09 +00001376 Report that the test runner is about to process the given example. This method
1377 is provided to allow subclasses of :class:`DocTestRunner` to customize their
1378 output; it should not be called directly.
Georg Brandl116aa622007-08-15 14:28:22 +00001379
Benjamin Petersone41251e2008-04-25 01:59:09 +00001380 *example* is the example about to be processed. *test* is the test
1381 *containing example*. *out* is the output function that was passed to
1382 :meth:`DocTestRunner.run`.
Georg Brandl116aa622007-08-15 14:28:22 +00001383
1384
Benjamin Petersone41251e2008-04-25 01:59:09 +00001385 .. method:: report_success(out, test, example, got)
Georg Brandl116aa622007-08-15 14:28:22 +00001386
Benjamin Petersone41251e2008-04-25 01:59:09 +00001387 Report that the given example ran successfully. This method is provided to
1388 allow subclasses of :class:`DocTestRunner` to customize their output; it
1389 should not be called directly.
Georg Brandl116aa622007-08-15 14:28:22 +00001390
Benjamin Petersone41251e2008-04-25 01:59:09 +00001391 *example* is the example about to be processed. *got* is the actual output
1392 from the example. *test* is the test containing *example*. *out* is the
1393 output function that was passed to :meth:`DocTestRunner.run`.
Georg Brandl116aa622007-08-15 14:28:22 +00001394
1395
Benjamin Petersone41251e2008-04-25 01:59:09 +00001396 .. method:: report_failure(out, test, example, got)
Georg Brandl116aa622007-08-15 14:28:22 +00001397
Benjamin Petersone41251e2008-04-25 01:59:09 +00001398 Report that the given example failed. This method is provided to allow
1399 subclasses of :class:`DocTestRunner` to customize their output; it should not
1400 be called directly.
Georg Brandl116aa622007-08-15 14:28:22 +00001401
Benjamin Petersone41251e2008-04-25 01:59:09 +00001402 *example* is the example about to be processed. *got* is the actual output
1403 from the example. *test* is the test containing *example*. *out* is the
1404 output function that was passed to :meth:`DocTestRunner.run`.
Georg Brandl116aa622007-08-15 14:28:22 +00001405
1406
Benjamin Petersone41251e2008-04-25 01:59:09 +00001407 .. method:: report_unexpected_exception(out, test, example, exc_info)
Georg Brandl116aa622007-08-15 14:28:22 +00001408
Benjamin Petersone41251e2008-04-25 01:59:09 +00001409 Report that the given example raised an unexpected exception. This method is
1410 provided to allow subclasses of :class:`DocTestRunner` to customize their
1411 output; it should not be called directly.
Georg Brandl116aa622007-08-15 14:28:22 +00001412
Benjamin Petersone41251e2008-04-25 01:59:09 +00001413 *example* is the example about to be processed. *exc_info* is a tuple
1414 containing information about the unexpected exception (as returned by
1415 :func:`sys.exc_info`). *test* is the test containing *example*. *out* is the
1416 output function that was passed to :meth:`DocTestRunner.run`.
Georg Brandl116aa622007-08-15 14:28:22 +00001417
1418
Georg Brandlc2a4f4f2009-04-10 09:03:43 +00001419 .. method:: run(test, compileflags=None, out=None, clear_globs=True)
Georg Brandl116aa622007-08-15 14:28:22 +00001420
Benjamin Petersone41251e2008-04-25 01:59:09 +00001421 Run the examples in *test* (a :class:`DocTest` object), and display the
1422 results using the writer function *out*.
Georg Brandl116aa622007-08-15 14:28:22 +00001423
Benjamin Petersone41251e2008-04-25 01:59:09 +00001424 The examples are run in the namespace ``test.globs``. If *clear_globs* is
1425 true (the default), then this namespace will be cleared after the test runs,
1426 to help with garbage collection. If you would like to examine the namespace
1427 after the test completes, then use *clear_globs=False*.
Georg Brandl116aa622007-08-15 14:28:22 +00001428
Benjamin Petersone41251e2008-04-25 01:59:09 +00001429 *compileflags* gives the set of flags that should be used by the Python
1430 compiler when running the examples. If not specified, then it will default to
1431 the set of future-import flags that apply to *globs*.
Georg Brandl116aa622007-08-15 14:28:22 +00001432
Benjamin Petersone41251e2008-04-25 01:59:09 +00001433 The output of each example is checked using the :class:`DocTestRunner`'s
1434 output checker, and the results are formatted by the
1435 :meth:`DocTestRunner.report_\*` methods.
Georg Brandl116aa622007-08-15 14:28:22 +00001436
1437
Georg Brandlc2a4f4f2009-04-10 09:03:43 +00001438 .. method:: summarize(verbose=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001439
Benjamin Petersone41251e2008-04-25 01:59:09 +00001440 Print a summary of all the test cases that have been run by this DocTestRunner,
1441 and return a :term:`named tuple` ``TestResults(failed, attempted)``.
Georg Brandl116aa622007-08-15 14:28:22 +00001442
Benjamin Petersone41251e2008-04-25 01:59:09 +00001443 The optional *verbose* argument controls how detailed the summary is. If the
1444 verbosity is not specified, then the :class:`DocTestRunner`'s verbosity is
1445 used.
Georg Brandl116aa622007-08-15 14:28:22 +00001446
1447.. _doctest-outputchecker:
1448
1449OutputChecker objects
1450^^^^^^^^^^^^^^^^^^^^^
1451
1452
1453.. class:: OutputChecker()
1454
1455 A class used to check the whether the actual output from a doctest example
1456 matches the expected output. :class:`OutputChecker` defines two methods:
1457 :meth:`check_output`, which compares a given pair of outputs, and returns true
1458 if they match; and :meth:`output_difference`, which returns a string describing
1459 the differences between two outputs.
1460
Georg Brandl116aa622007-08-15 14:28:22 +00001461
Benjamin Petersone41251e2008-04-25 01:59:09 +00001462 :class:`OutputChecker` defines the following methods:
Georg Brandl116aa622007-08-15 14:28:22 +00001463
Benjamin Petersone41251e2008-04-25 01:59:09 +00001464 .. method:: check_output(want, got, optionflags)
Georg Brandl116aa622007-08-15 14:28:22 +00001465
Benjamin Petersone41251e2008-04-25 01:59:09 +00001466 Return ``True`` iff the actual output from an example (*got*) matches the
1467 expected output (*want*). These strings are always considered to match if
1468 they are identical; but depending on what option flags the test runner is
1469 using, several non-exact match types are also possible. See section
1470 :ref:`doctest-options` for more information about option flags.
Georg Brandl116aa622007-08-15 14:28:22 +00001471
1472
Benjamin Petersone41251e2008-04-25 01:59:09 +00001473 .. method:: output_difference(example, got, optionflags)
Georg Brandl116aa622007-08-15 14:28:22 +00001474
Benjamin Petersone41251e2008-04-25 01:59:09 +00001475 Return a string describing the differences between the expected output for a
1476 given example (*example*) and the actual output (*got*). *optionflags* is the
1477 set of option flags used to compare *want* and *got*.
Georg Brandl116aa622007-08-15 14:28:22 +00001478
1479
1480.. _doctest-debugging:
1481
1482Debugging
1483---------
1484
1485Doctest provides several mechanisms for debugging doctest examples:
1486
1487* Several functions convert doctests to executable Python programs, which can be
1488 run under the Python debugger, :mod:`pdb`.
1489
1490* The :class:`DebugRunner` class is a subclass of :class:`DocTestRunner` that
1491 raises an exception for the first failing example, containing information about
1492 that example. This information can be used to perform post-mortem debugging on
1493 the example.
1494
1495* The :mod:`unittest` cases generated by :func:`DocTestSuite` support the
1496 :meth:`debug` method defined by :class:`unittest.TestCase`.
1497
1498* You can add a call to :func:`pdb.set_trace` in a doctest example, and you'll
1499 drop into the Python debugger when that line is executed. Then you can inspect
1500 current values of variables, and so on. For example, suppose :file:`a.py`
1501 contains just this module docstring::
1502
1503 """
1504 >>> def f(x):
1505 ... g(x*2)
1506 >>> def g(x):
Georg Brandl6911e3c2007-09-04 07:15:32 +00001507 ... print(x+3)
Georg Brandl116aa622007-08-15 14:28:22 +00001508 ... import pdb; pdb.set_trace()
1509 >>> f(3)
1510 9
1511 """
1512
1513 Then an interactive Python session may look like this::
1514
1515 >>> import a, doctest
1516 >>> doctest.testmod(a)
1517 --Return--
1518 > <doctest a[1]>(3)g()->None
1519 -> import pdb; pdb.set_trace()
1520 (Pdb) list
1521 1 def g(x):
Georg Brandl6911e3c2007-09-04 07:15:32 +00001522 2 print(x+3)
Georg Brandl116aa622007-08-15 14:28:22 +00001523 3 -> import pdb; pdb.set_trace()
1524 [EOF]
Georg Brandl6911e3c2007-09-04 07:15:32 +00001525 (Pdb) p x
Georg Brandl116aa622007-08-15 14:28:22 +00001526 6
1527 (Pdb) step
1528 --Return--
1529 > <doctest a[0]>(2)f()->None
1530 -> g(x*2)
1531 (Pdb) list
1532 1 def f(x):
1533 2 -> g(x*2)
1534 [EOF]
Georg Brandl6911e3c2007-09-04 07:15:32 +00001535 (Pdb) p x
Georg Brandl116aa622007-08-15 14:28:22 +00001536 3
1537 (Pdb) step
1538 --Return--
1539 > <doctest a[2]>(1)?()->None
1540 -> f(3)
1541 (Pdb) cont
1542 (0, 3)
1543 >>>
1544
Georg Brandl116aa622007-08-15 14:28:22 +00001545
1546Functions that convert doctests to Python code, and possibly run the synthesized
1547code under the debugger:
1548
1549
1550.. function:: script_from_examples(s)
1551
1552 Convert text with examples to a script.
1553
1554 Argument *s* is a string containing doctest examples. The string is converted
1555 to a Python script, where doctest examples in *s* are converted to regular code,
1556 and everything else is converted to Python comments. The generated script is
1557 returned as a string. For example, ::
1558
1559 import doctest
Georg Brandl6911e3c2007-09-04 07:15:32 +00001560 print(doctest.script_from_examples(r"""
Georg Brandl116aa622007-08-15 14:28:22 +00001561 Set x and y to 1 and 2.
1562 >>> x, y = 1, 2
1563
1564 Print their sum:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001565 >>> print(x+y)
Georg Brandl116aa622007-08-15 14:28:22 +00001566 3
Georg Brandl6911e3c2007-09-04 07:15:32 +00001567 """))
Georg Brandl116aa622007-08-15 14:28:22 +00001568
1569 displays::
1570
1571 # Set x and y to 1 and 2.
1572 x, y = 1, 2
1573 #
1574 # Print their sum:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001575 print(x+y)
Georg Brandl116aa622007-08-15 14:28:22 +00001576 # Expected:
1577 ## 3
1578
1579 This function is used internally by other functions (see below), but can also be
1580 useful when you want to transform an interactive Python session into a Python
1581 script.
1582
Georg Brandl116aa622007-08-15 14:28:22 +00001583
1584.. function:: testsource(module, name)
1585
1586 Convert the doctest for an object to a script.
1587
1588 Argument *module* is a module object, or dotted name of a module, containing the
1589 object whose doctests are of interest. Argument *name* is the name (within the
1590 module) of the object with the doctests of interest. The result is a string,
1591 containing the object's docstring converted to a Python script, as described for
1592 :func:`script_from_examples` above. For example, if module :file:`a.py`
1593 contains a top-level function :func:`f`, then ::
1594
1595 import a, doctest
Georg Brandl6911e3c2007-09-04 07:15:32 +00001596 print(doctest.testsource(a, "a.f"))
Georg Brandl116aa622007-08-15 14:28:22 +00001597
1598 prints a script version of function :func:`f`'s docstring, with doctests
1599 converted to code, and the rest placed in comments.
1600
Georg Brandl116aa622007-08-15 14:28:22 +00001601
Georg Brandlc2a4f4f2009-04-10 09:03:43 +00001602.. function:: debug(module, name, pm=False)
Georg Brandl116aa622007-08-15 14:28:22 +00001603
1604 Debug the doctests for an object.
1605
1606 The *module* and *name* arguments are the same as for function
1607 :func:`testsource` above. The synthesized Python script for the named object's
1608 docstring is written to a temporary file, and then that file is run under the
1609 control of the Python debugger, :mod:`pdb`.
1610
1611 A shallow copy of ``module.__dict__`` is used for both local and global
1612 execution context.
1613
1614 Optional argument *pm* controls whether post-mortem debugging is used. If *pm*
1615 has a true value, the script file is run directly, and the debugger gets
1616 involved only if the script terminates via raising an unhandled exception. If
1617 it does, then post-mortem debugging is invoked, via :func:`pdb.post_mortem`,
1618 passing the traceback object from the unhandled exception. If *pm* is not
1619 specified, or is false, the script is run under the debugger from the start, via
1620 passing an appropriate :func:`exec` call to :func:`pdb.run`.
1621
Georg Brandl116aa622007-08-15 14:28:22 +00001622
Georg Brandlc2a4f4f2009-04-10 09:03:43 +00001623.. function:: debug_src(src, pm=False, globs=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001624
1625 Debug the doctests in a string.
1626
1627 This is like function :func:`debug` above, except that a string containing
1628 doctest examples is specified directly, via the *src* argument.
1629
1630 Optional argument *pm* has the same meaning as in function :func:`debug` above.
1631
1632 Optional argument *globs* gives a dictionary to use as both local and global
1633 execution context. If not specified, or ``None``, an empty dictionary is used.
1634 If specified, a shallow copy of the dictionary is used.
1635
Georg Brandl116aa622007-08-15 14:28:22 +00001636
1637The :class:`DebugRunner` class, and the special exceptions it may raise, are of
1638most interest to testing framework authors, and will only be sketched here. See
1639the source code, and especially :class:`DebugRunner`'s docstring (which is a
1640doctest!) for more details:
1641
1642
Georg Brandlc2a4f4f2009-04-10 09:03:43 +00001643.. class:: DebugRunner(checker=None, verbose=None, optionflags=0)
Georg Brandl116aa622007-08-15 14:28:22 +00001644
1645 A subclass of :class:`DocTestRunner` that raises an exception as soon as a
1646 failure is encountered. If an unexpected exception occurs, an
1647 :exc:`UnexpectedException` exception is raised, containing the test, the
1648 example, and the original exception. If the output doesn't match, then a
1649 :exc:`DocTestFailure` exception is raised, containing the test, the example, and
1650 the actual output.
1651
1652 For information about the constructor parameters and methods, see the
1653 documentation for :class:`DocTestRunner` in section :ref:`doctest-advanced-api`.
1654
1655There are two exceptions that may be raised by :class:`DebugRunner` instances:
1656
1657
1658.. exception:: DocTestFailure(test, example, got)
1659
1660 An exception thrown by :class:`DocTestRunner` to signal that a doctest example's
1661 actual output did not match its expected output. The constructor arguments are
1662 used to initialize the member variables of the same names.
1663
1664:exc:`DocTestFailure` defines the following member variables:
1665
1666
1667.. attribute:: DocTestFailure.test
1668
1669 The :class:`DocTest` object that was being run when the example failed.
1670
1671
1672.. attribute:: DocTestFailure.example
1673
1674 The :class:`Example` that failed.
1675
1676
1677.. attribute:: DocTestFailure.got
1678
1679 The example's actual output.
1680
1681
1682.. exception:: UnexpectedException(test, example, exc_info)
1683
1684 An exception thrown by :class:`DocTestRunner` to signal that a doctest example
1685 raised an unexpected exception. The constructor arguments are used to
1686 initialize the member variables of the same names.
1687
1688:exc:`UnexpectedException` defines the following member variables:
1689
1690
1691.. attribute:: UnexpectedException.test
1692
1693 The :class:`DocTest` object that was being run when the example failed.
1694
1695
1696.. attribute:: UnexpectedException.example
1697
1698 The :class:`Example` that failed.
1699
1700
1701.. attribute:: UnexpectedException.exc_info
1702
1703 A tuple containing information about the unexpected exception, as returned by
1704 :func:`sys.exc_info`.
1705
1706
1707.. _doctest-soapbox:
1708
1709Soapbox
1710-------
1711
1712As mentioned in the introduction, :mod:`doctest` has grown to have three primary
1713uses:
1714
1715#. Checking examples in docstrings.
1716
1717#. Regression testing.
1718
1719#. Executable documentation / literate testing.
1720
1721These uses have different requirements, and it is important to distinguish them.
1722In particular, filling your docstrings with obscure test cases makes for bad
1723documentation.
1724
1725When writing a docstring, choose docstring examples with care. There's an art to
1726this that needs to be learned---it may not be natural at first. Examples should
1727add genuine value to the documentation. A good example can often be worth many
1728words. If done with care, the examples will be invaluable for your users, and
1729will pay back the time it takes to collect them many times over as the years go
1730by and things change. I'm still amazed at how often one of my :mod:`doctest`
1731examples stops working after a "harmless" change.
1732
1733Doctest also makes an excellent tool for regression testing, especially if you
1734don't skimp on explanatory text. By interleaving prose and examples, it becomes
1735much easier to keep track of what's actually being tested, and why. When a test
1736fails, good prose can make it much easier to figure out what the problem is, and
1737how it should be fixed. It's true that you could write extensive comments in
1738code-based testing, but few programmers do. Many have found that using doctest
1739approaches instead leads to much clearer tests. Perhaps this is simply because
1740doctest makes writing prose a little easier than writing code, while writing
1741comments in code is a little harder. I think it goes deeper than just that:
1742the natural attitude when writing a doctest-based test is that you want to
1743explain the fine points of your software, and illustrate them with examples.
1744This in turn naturally leads to test files that start with the simplest
1745features, and logically progress to complications and edge cases. A coherent
1746narrative is the result, instead of a collection of isolated functions that test
1747isolated bits of functionality seemingly at random. It's a different attitude,
1748and produces different results, blurring the distinction between testing and
1749explaining.
1750
1751Regression testing is best confined to dedicated objects or files. There are
1752several options for organizing tests:
1753
1754* Write text files containing test cases as interactive examples, and test the
1755 files using :func:`testfile` or :func:`DocFileSuite`. This is recommended,
1756 although is easiest to do for new projects, designed from the start to use
1757 doctest.
1758
1759* Define functions named ``_regrtest_topic`` that consist of single docstrings,
1760 containing test cases for the named topics. These functions can be included in
1761 the same file as the module, or separated out into a separate test file.
1762
1763* Define a ``__test__`` dictionary mapping from regression test topics to
1764 docstrings containing test cases.
1765
1766.. rubric:: Footnotes
1767
1768.. [#] Examples containing both expected output and an exception are not supported.
1769 Trying to guess where one ends and the other begins is too error-prone, and that
1770 also makes for a confusing test.