| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1 | :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 |  | 
 | 12 | The :mod:`doctest` module searches for pieces of text that look like interactive | 
 | 13 | Python sessions, and then executes those sessions to verify that they work | 
 | 14 | exactly 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 |  | 
 | 27 | Here'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 Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 41 |        >>> [factorial(n) for n in range(6)] | 
 | 42 |        [1, 1, 2, 6, 24, 120] | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 43 |        >>> factorial(30) | 
| Georg Brandl | 5c10664 | 2007-11-29 17:41:05 +0000 | [diff] [blame] | 44 |        265252859812191058636308480000000 | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 45 |        >>> 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 Brandl | 5c10664 | 2007-11-29 17:41:05 +0000 | [diff] [blame] | 56 |        265252859812191058636308480000000 | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 57 |  | 
 | 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 Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 65 |        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 Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 79 |  | 
 | 80 |    if __name__ == "__main__": | 
| Guido van Rossum | 04110fb | 2007-08-24 16:32:05 +0000 | [diff] [blame] | 81 |        import doctest | 
 | 82 |        doctest.testmod() | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 83 |  | 
 | 84 | If you run :file:`example.py` directly from the command line, :mod:`doctest` | 
 | 85 | works its magic:: | 
 | 86 |  | 
 | 87 |    $ python example.py | 
 | 88 |    $ | 
 | 89 |  | 
 | 90 | There'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 | 
 | 92 | it'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 Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 105 |  | 
 | 106 | And 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 Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 115 |    2 items passed all tests: | 
 | 116 |       1 tests in __main__ | 
 | 117 |       8 tests in __main__.factorial | 
| Guido van Rossum | 04110fb | 2007-08-24 16:32:05 +0000 | [diff] [blame] | 118 |    9 tests in 2 items. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 119 |    9 passed and 0 failed. | 
 | 120 |    Test passed. | 
 | 121 |    $ | 
 | 122 |  | 
 | 123 | That's all you need to know to start making productive use of :mod:`doctest`! | 
 | 124 | Jump in.  The following sections provide full details.  Note that there are many | 
 | 125 | examples of doctests in the standard Python test suite and libraries. | 
 | 126 | Especially useful examples can be found in the standard test file | 
 | 127 | :file:`Lib/test/test_doctest.py`. | 
 | 128 |  | 
 | 129 |  | 
 | 130 | .. _doctest-simple-testmod: | 
 | 131 |  | 
 | 132 | Simple Usage: Checking Examples in Docstrings | 
 | 133 | --------------------------------------------- | 
 | 134 |  | 
 | 135 | The simplest way to start using doctest (but not necessarily the way you'll | 
 | 136 | continue to do it) is to end each module :mod:`M` with:: | 
 | 137 |  | 
| Guido van Rossum | 04110fb | 2007-08-24 16:32:05 +0000 | [diff] [blame] | 138 |    if __name__ == "__main__": | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 139 |        import doctest | 
 | 140 |        doctest.testmod() | 
 | 141 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 142 | :mod:`doctest` then examines docstrings in module :mod:`M`. | 
 | 143 |  | 
 | 144 | Running the module as a script causes the examples in the docstrings to get | 
 | 145 | executed and verified:: | 
 | 146 |  | 
 | 147 |    python M.py | 
 | 148 |  | 
 | 149 | This won't display anything unless an example fails, in which case the failing | 
 | 150 | example(s) and the cause(s) of the failure(s) are printed to stdout, and the | 
 | 151 | final line of output is ``***Test Failed*** N failures.``, where *N* is the | 
 | 152 | number of examples that failed. | 
 | 153 |  | 
 | 154 | Run it with the :option:`-v` switch instead:: | 
 | 155 |  | 
 | 156 |    python M.py -v | 
 | 157 |  | 
 | 158 | and a detailed report of all examples tried is printed to standard output, along | 
 | 159 | with assorted summaries at the end. | 
 | 160 |  | 
 | 161 | You can force verbose mode by passing ``verbose=True`` to :func:`testmod`, or | 
 | 162 | prohibit 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 | 
 | 164 | has no effect). | 
 | 165 |  | 
| Georg Brandl | 3183585 | 2008-05-12 17:38:56 +0000 | [diff] [blame] | 166 | There is also a command line shortcut for running :func:`testmod`.  You can | 
 | 167 | instruct the Python interpreter to run the doctest module directly from the | 
 | 168 | standard library and pass the module name(s) on the command line:: | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 169 |  | 
 | 170 |    python -m doctest -v example.py | 
 | 171 |  | 
 | 172 | This 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 | 
 | 174 | part of a package and imports other submodules from that package. | 
 | 175 |  | 
 | 176 | For more information on :func:`testmod`, see section :ref:`doctest-basic-api`. | 
 | 177 |  | 
 | 178 |  | 
 | 179 | .. _doctest-simple-testfile: | 
 | 180 |  | 
 | 181 | Simple Usage: Checking Examples in a Text File | 
 | 182 | ---------------------------------------------- | 
 | 183 |  | 
 | 184 | Another simple application of doctest is testing interactive examples in a text | 
 | 185 | file.  This can be done with the :func:`testfile` function:: | 
 | 186 |  | 
 | 187 |    import doctest | 
 | 188 |    doctest.testfile("example.txt") | 
 | 189 |  | 
 | 190 | That short script executes and verifies any interactive Python examples | 
 | 191 | contained in the file :file:`example.txt`.  The file content is treated as if it | 
 | 192 | were a single giant docstring; the file doesn't need to contain a Python | 
 | 193 | program!   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 |  | 
 | 211 | Running ``doctest.testfile("example.txt")`` then finds the error in this | 
 | 212 | documentation:: | 
 | 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 |  | 
 | 222 | As with :func:`testmod`, :func:`testfile` won't display anything unless an | 
 | 223 | example fails.  If an example does fail, then the failing example(s) and the | 
 | 224 | cause(s) of the failure(s) are printed to stdout, using the same format as | 
 | 225 | :func:`testmod`. | 
 | 226 |  | 
 | 227 | By default, :func:`testfile` looks for files in the calling module's directory. | 
 | 228 | See section :ref:`doctest-basic-api` for a description of the optional arguments | 
 | 229 | that can be used to tell it to look for files in other locations. | 
 | 230 |  | 
 | 231 | Like :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 Brandl | 3183585 | 2008-05-12 17:38:56 +0000 | [diff] [blame] | 235 | There is also a command line shortcut for running :func:`testfile`.  You can | 
 | 236 | instruct the Python interpreter to run the doctest module directly from the | 
 | 237 | standard library and pass the file name(s) on the command line:: | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 238 |  | 
 | 239 |    python -m doctest -v example.txt | 
 | 240 |  | 
 | 241 | Because the file name does not end with :file:`.py`, :mod:`doctest` infers that | 
 | 242 | it must be run with :func:`testfile`, not :func:`testmod`. | 
 | 243 |  | 
 | 244 | For more information on :func:`testfile`, see section :ref:`doctest-basic-api`. | 
 | 245 |  | 
 | 246 |  | 
 | 247 | .. _doctest-how-it-works: | 
 | 248 |  | 
 | 249 | How It Works | 
 | 250 | ------------ | 
 | 251 |  | 
 | 252 | This section examines in detail how doctest works: which docstrings it looks at, | 
 | 253 | how it finds interactive examples, what execution context it uses, how it | 
 | 254 | handles exceptions, and how option flags can be used to control its behavior. | 
 | 255 | This is the information that you need to know to write doctest examples; for | 
 | 256 | information about actually running doctest on these examples, see the following | 
 | 257 | sections. | 
 | 258 |  | 
 | 259 |  | 
 | 260 | .. _doctest-which-docstrings: | 
 | 261 |  | 
 | 262 | Which Docstrings Are Examined? | 
 | 263 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | 
 | 264 |  | 
 | 265 | The module docstring, and all function, class and method docstrings are | 
 | 266 | searched.  Objects imported into the module are not searched. | 
 | 267 |  | 
 | 268 | In addition, if ``M.__test__`` exists and "is true", it must be a dict, and each | 
 | 269 | entry maps a (string) name to a function object, class object, or string. | 
 | 270 | Function and class object docstrings found from ``M.__test__`` are searched, and | 
 | 271 | strings 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 |  | 
 | 276 | Any classes found are recursively searched similarly, to test docstrings in | 
 | 277 | their contained methods and nested classes. | 
 | 278 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 279 |  | 
 | 280 | .. _doctest-finding-examples: | 
 | 281 |  | 
 | 282 | How are Docstring Examples Recognized? | 
 | 283 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | 
 | 284 |  | 
 | 285 | In most cases a copy-and-paste of an interactive console session works fine, but | 
 | 286 | doctest isn't trying to do an exact emulation of any specific Python shell.  All | 
 | 287 | hard tab characters are expanded to spaces, using 8-column tab stops.  If you | 
 | 288 | don't believe tabs should mean that, too bad:  don't use hard tabs, or write | 
 | 289 | your own :class:`DocTestParser` class. | 
 | 290 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 291 | :: | 
 | 292 |  | 
 | 293 |    >>> # comments are ignored | 
 | 294 |    >>> x = 12 | 
 | 295 |    >>> x | 
 | 296 |    12 | 
 | 297 |    >>> if x == 13: | 
| Georg Brandl | 6911e3c | 2007-09-04 07:15:32 +0000 | [diff] [blame] | 298 |    ...     print("yes") | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 299 |    ... else: | 
| Georg Brandl | 6911e3c | 2007-09-04 07:15:32 +0000 | [diff] [blame] | 300 |    ...     print("no") | 
 | 301 |    ...     print("NO") | 
 | 302 |    ...     print("NO!!!") | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 303 |    ... | 
 | 304 |    no | 
 | 305 |    NO | 
 | 306 |    NO!!! | 
 | 307 |    >>> | 
 | 308 |  | 
 | 309 | Any expected output must immediately follow the final ``'>>> '`` or ``'... '`` | 
 | 310 | line containing the code, and the expected output (if any) extends to the next | 
 | 311 | ``'>>> '`` or all-whitespace line. | 
 | 312 |  | 
 | 313 | The fine print: | 
 | 314 |  | 
 | 315 | * Expected output cannot contain an all-whitespace line, since such a line is | 
 | 316 |   taken to signal the end of expected output.  If expected output does contain a | 
 | 317 |   blank line, put ``<BLANKLINE>`` in your doctest example each place a blank line | 
 | 318 |   is expected. | 
 | 319 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 320 | * Output to stdout is captured, but not output to stderr (exception tracebacks | 
 | 321 |   are captured via a different means). | 
 | 322 |  | 
 | 323 | * If you continue a line via backslashing in an interactive session, or for any | 
 | 324 |   other reason use a backslash, you should use a raw docstring, which will | 
 | 325 |   preserve your backslashes exactly as you type them:: | 
 | 326 |  | 
 | 327 |      >>> def f(x): | 
 | 328 |      ...     r'''Backslashes in a raw docstring: m\n''' | 
| Georg Brandl | 6911e3c | 2007-09-04 07:15:32 +0000 | [diff] [blame] | 329 |      >>> print(f.__doc__) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 330 |      Backslashes in a raw docstring: m\n | 
 | 331 |  | 
 | 332 |   Otherwise, the backslash will be interpreted as part of the string. For example, | 
 | 333 |   the "\\" above would be interpreted as a newline character.  Alternatively, you | 
 | 334 |   can double each backslash in the doctest version (and not use a raw string):: | 
 | 335 |  | 
 | 336 |      >>> def f(x): | 
 | 337 |      ...     '''Backslashes in a raw docstring: m\\n''' | 
| Georg Brandl | 6911e3c | 2007-09-04 07:15:32 +0000 | [diff] [blame] | 338 |      >>> print(f.__doc__) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 339 |      Backslashes in a raw docstring: m\n | 
 | 340 |  | 
 | 341 | * The starting column doesn't matter:: | 
 | 342 |  | 
 | 343 |      >>> assert "Easy!" | 
 | 344 |            >>> import math | 
 | 345 |                >>> math.floor(1.9) | 
 | 346 |                1.0 | 
 | 347 |  | 
 | 348 |   and as many leading whitespace characters are stripped from the expected output | 
 | 349 |   as appeared in the initial ``'>>> '`` line that started the example. | 
 | 350 |  | 
 | 351 |  | 
 | 352 | .. _doctest-execution-context: | 
 | 353 |  | 
 | 354 | What's the Execution Context? | 
 | 355 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | 
 | 356 |  | 
 | 357 | By default, each time :mod:`doctest` finds a docstring to test, it uses a | 
 | 358 | *shallow copy* of :mod:`M`'s globals, so that running tests doesn't change the | 
 | 359 | module's real globals, and so that one test in :mod:`M` can't leave behind | 
 | 360 | crumbs that accidentally allow another test to work.  This means examples can | 
 | 361 | freely use any names defined at top-level in :mod:`M`, and names defined earlier | 
 | 362 | in the docstring being run. Examples cannot see names defined in other | 
 | 363 | docstrings. | 
 | 364 |  | 
 | 365 | You can force use of your own dict as the execution context by passing | 
 | 366 | ``globs=your_dict`` to :func:`testmod` or :func:`testfile` instead. | 
 | 367 |  | 
 | 368 |  | 
 | 369 | .. _doctest-exceptions: | 
 | 370 |  | 
 | 371 | What About Exceptions? | 
 | 372 | ^^^^^^^^^^^^^^^^^^^^^^ | 
 | 373 |  | 
 | 374 | No problem, provided that the traceback is the only output produced by the | 
 | 375 | example:  just paste in the traceback. [#]_ Since tracebacks contain details | 
 | 376 | that are likely to change rapidly (for example, exact file paths and line | 
 | 377 | numbers), this is one case where doctest works hard to be flexible in what it | 
 | 378 | accepts. | 
 | 379 |  | 
 | 380 | Simple example:: | 
 | 381 |  | 
 | 382 |    >>> [1, 2, 3].remove(42) | 
 | 383 |    Traceback (most recent call last): | 
 | 384 |      File "<stdin>", line 1, in ? | 
 | 385 |    ValueError: list.remove(x): x not in list | 
 | 386 |  | 
 | 387 | That doctest succeeds if :exc:`ValueError` is raised, with the ``list.remove(x): | 
 | 388 | x not in list`` detail as shown. | 
 | 389 |  | 
 | 390 | The expected output for an exception must start with a traceback header, which | 
 | 391 | may be either of the following two lines, indented the same as the first line of | 
 | 392 | the example:: | 
 | 393 |  | 
 | 394 |    Traceback (most recent call last): | 
 | 395 |    Traceback (innermost last): | 
 | 396 |  | 
 | 397 | The traceback header is followed by an optional traceback stack, whose contents | 
 | 398 | are ignored by doctest.  The traceback stack is typically omitted, or copied | 
 | 399 | verbatim from an interactive session. | 
 | 400 |  | 
 | 401 | The traceback stack is followed by the most interesting part: the line(s) | 
 | 402 | containing the exception type and detail.  This is usually the last line of a | 
 | 403 | traceback, but can extend across multiple lines if the exception has a | 
 | 404 | multi-line detail:: | 
 | 405 |  | 
 | 406 |    >>> raise ValueError('multi\n    line\ndetail') | 
 | 407 |    Traceback (most recent call last): | 
 | 408 |      File "<stdin>", line 1, in ? | 
 | 409 |    ValueError: multi | 
 | 410 |        line | 
 | 411 |    detail | 
 | 412 |  | 
 | 413 | The last three lines (starting with :exc:`ValueError`) are compared against the | 
 | 414 | exception's type and detail, and the rest are ignored. | 
 | 415 |  | 
 | 416 | Best practice is to omit the traceback stack, unless it adds significant | 
 | 417 | documentation value to the example.  So the last example is probably better as:: | 
 | 418 |  | 
 | 419 |    >>> raise ValueError('multi\n    line\ndetail') | 
 | 420 |    Traceback (most recent call last): | 
 | 421 |        ... | 
 | 422 |    ValueError: multi | 
 | 423 |        line | 
 | 424 |    detail | 
 | 425 |  | 
 | 426 | Note that tracebacks are treated very specially.  In particular, in the | 
 | 427 | rewritten example, the use of ``...`` is independent of doctest's | 
 | 428 | :const:`ELLIPSIS` option.  The ellipsis in that example could be left out, or | 
 | 429 | could just as well be three (or three hundred) commas or digits, or an indented | 
 | 430 | transcript of a Monty Python skit. | 
 | 431 |  | 
 | 432 | Some details you should read once, but won't need to remember: | 
 | 433 |  | 
 | 434 | * Doctest can't guess whether your expected output came from an exception | 
 | 435 |   traceback or from ordinary printing.  So, e.g., an example that expects | 
 | 436 |   ``ValueError: 42 is prime`` will pass whether :exc:`ValueError` is actually | 
 | 437 |   raised or if the example merely prints that traceback text.  In practice, | 
 | 438 |   ordinary output rarely begins with a traceback header line, so this doesn't | 
 | 439 |   create real problems. | 
 | 440 |  | 
 | 441 | * Each line of the traceback stack (if present) must be indented further than | 
 | 442 |   the first line of the example, *or* start with a non-alphanumeric character. | 
 | 443 |   The first line following the traceback header indented the same and starting | 
 | 444 |   with an alphanumeric is taken to be the start of the exception detail.  Of | 
 | 445 |   course this does the right thing for genuine tracebacks. | 
 | 446 |  | 
 | 447 | * When the :const:`IGNORE_EXCEPTION_DETAIL` doctest option is is specified, | 
 | 448 |   everything following the leftmost colon is ignored. | 
 | 449 |  | 
 | 450 | * The interactive shell omits the traceback header line for some | 
 | 451 |   :exc:`SyntaxError`\ s.  But doctest uses the traceback header line to | 
 | 452 |   distinguish exceptions from non-exceptions.  So in the rare case where you need | 
 | 453 |   to test a :exc:`SyntaxError` that omits the traceback header, you will need to | 
 | 454 |   manually add the traceback header line to your test example. | 
 | 455 |  | 
 | 456 | * For some :exc:`SyntaxError`\ s, Python displays the character position of the | 
 | 457 |   syntax error, using a ``^`` marker:: | 
 | 458 |  | 
 | 459 |      >>> 1 1 | 
 | 460 |        File "<stdin>", line 1 | 
 | 461 |          1 1 | 
 | 462 |            ^ | 
 | 463 |      SyntaxError: invalid syntax | 
 | 464 |  | 
 | 465 |   Since the lines showing the position of the error come before the exception type | 
 | 466 |   and detail, they are not checked by doctest.  For example, the following test | 
 | 467 |   would pass, even though it puts the ``^`` marker in the wrong location:: | 
 | 468 |  | 
 | 469 |      >>> 1 1 | 
 | 470 |      Traceback (most recent call last): | 
 | 471 |        File "<stdin>", line 1 | 
 | 472 |          1 1 | 
 | 473 |          ^ | 
 | 474 |      SyntaxError: invalid syntax | 
 | 475 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 476 |  | 
 | 477 | .. _doctest-options: | 
 | 478 |  | 
 | 479 | Option Flags and Directives | 
 | 480 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ | 
 | 481 |  | 
 | 482 | A number of option flags control various aspects of doctest's behavior. | 
 | 483 | Symbolic names for the flags are supplied as module constants, which can be | 
 | 484 | or'ed together and passed to various functions.  The names can also be used in | 
 | 485 | doctest directives (see below). | 
 | 486 |  | 
 | 487 | The first group of options define test semantics, controlling aspects of how | 
 | 488 | doctest decides whether actual output matches an example's expected output: | 
 | 489 |  | 
 | 490 |  | 
 | 491 | .. data:: DONT_ACCEPT_TRUE_FOR_1 | 
 | 492 |  | 
 | 493 |    By default, if an expected output block contains just ``1``, an actual output | 
 | 494 |    block containing just ``1`` or just ``True`` is considered to be a match, and | 
 | 495 |    similarly for ``0`` versus ``False``.  When :const:`DONT_ACCEPT_TRUE_FOR_1` is | 
 | 496 |    specified, neither substitution is allowed.  The default behavior caters to that | 
 | 497 |    Python changed the return type of many functions from integer to boolean; | 
 | 498 |    doctests expecting "little integer" output still work in these cases.  This | 
 | 499 |    option will probably go away, but not for several years. | 
 | 500 |  | 
 | 501 |  | 
 | 502 | .. data:: DONT_ACCEPT_BLANKLINE | 
 | 503 |  | 
 | 504 |    By default, if an expected output block contains a line containing only the | 
 | 505 |    string ``<BLANKLINE>``, then that line will match a blank line in the actual | 
 | 506 |    output.  Because a genuinely blank line delimits the expected output, this is | 
 | 507 |    the only way to communicate that a blank line is expected.  When | 
 | 508 |    :const:`DONT_ACCEPT_BLANKLINE` is specified, this substitution is not allowed. | 
 | 509 |  | 
 | 510 |  | 
 | 511 | .. data:: NORMALIZE_WHITESPACE | 
 | 512 |  | 
 | 513 |    When specified, all sequences of whitespace (blanks and newlines) are treated as | 
 | 514 |    equal.  Any sequence of whitespace within the expected output will match any | 
 | 515 |    sequence of whitespace within the actual output. By default, whitespace must | 
 | 516 |    match exactly. :const:`NORMALIZE_WHITESPACE` is especially useful when a line of | 
 | 517 |    expected output is very long, and you want to wrap it across multiple lines in | 
 | 518 |    your source. | 
 | 519 |  | 
 | 520 |  | 
 | 521 | .. data:: ELLIPSIS | 
 | 522 |  | 
 | 523 |    When specified, an ellipsis marker (``...``) in the expected output can match | 
 | 524 |    any substring in the actual output.  This includes substrings that span line | 
 | 525 |    boundaries, and empty substrings, so it's best to keep usage of this simple. | 
 | 526 |    Complicated uses can lead to the same kinds of "oops, it matched too much!" | 
 | 527 |    surprises that ``.*`` is prone to in regular expressions. | 
 | 528 |  | 
 | 529 |  | 
 | 530 | .. data:: IGNORE_EXCEPTION_DETAIL | 
 | 531 |  | 
 | 532 |    When specified, an example that expects an exception passes if an exception of | 
 | 533 |    the expected type is raised, even if the exception detail does not match.  For | 
 | 534 |    example, an example expecting ``ValueError: 42`` will pass if the actual | 
 | 535 |    exception raised is ``ValueError: 3*14``, but will fail, e.g., if | 
 | 536 |    :exc:`TypeError` is raised. | 
 | 537 |  | 
 | 538 |    Note that a similar effect can be obtained using :const:`ELLIPSIS`, and | 
 | 539 |    :const:`IGNORE_EXCEPTION_DETAIL` may go away when Python releases prior to 2.4 | 
 | 540 |    become uninteresting.  Until then, :const:`IGNORE_EXCEPTION_DETAIL` is the only | 
 | 541 |    clear way to write a doctest that doesn't care about the exception detail yet | 
 | 542 |    continues to pass under Python releases prior to 2.4 (doctest directives appear | 
 | 543 |    to be comments to them).  For example, :: | 
 | 544 |  | 
 | 545 |       >>> (1, 2)[3] = 'moo' #doctest: +IGNORE_EXCEPTION_DETAIL | 
 | 546 |       Traceback (most recent call last): | 
 | 547 |         File "<stdin>", line 1, in ? | 
 | 548 |       TypeError: object doesn't support item assignment | 
 | 549 |  | 
 | 550 |    passes under Python 2.4 and Python 2.3.  The detail changed in 2.4, to say "does | 
 | 551 |    not" instead of "doesn't". | 
 | 552 |  | 
 | 553 |  | 
 | 554 | .. data:: SKIP | 
 | 555 |  | 
 | 556 |    When specified, do not run the example at all.  This can be useful in contexts | 
 | 557 |    where doctest examples serve as both documentation and test cases, and an | 
 | 558 |    example should be included for documentation purposes, but should not be | 
 | 559 |    checked.  E.g., the example's output might be random; or the example might | 
 | 560 |    depend on resources which would be unavailable to the test driver. | 
 | 561 |  | 
 | 562 |    The SKIP flag can also be used for temporarily "commenting out" examples. | 
 | 563 |  | 
 | 564 |  | 
 | 565 | .. data:: COMPARISON_FLAGS | 
 | 566 |  | 
 | 567 |    A bitmask or'ing together all the comparison flags above. | 
 | 568 |  | 
 | 569 | The second group of options controls how test failures are reported: | 
 | 570 |  | 
 | 571 |  | 
 | 572 | .. data:: REPORT_UDIFF | 
 | 573 |  | 
 | 574 |    When specified, failures that involve multi-line expected and actual outputs are | 
 | 575 |    displayed using a unified diff. | 
 | 576 |  | 
 | 577 |  | 
 | 578 | .. data:: REPORT_CDIFF | 
 | 579 |  | 
 | 580 |    When specified, failures that involve multi-line expected and actual outputs | 
 | 581 |    will be displayed using a context diff. | 
 | 582 |  | 
 | 583 |  | 
 | 584 | .. data:: REPORT_NDIFF | 
 | 585 |  | 
 | 586 |    When specified, differences are computed by ``difflib.Differ``, using the same | 
 | 587 |    algorithm as the popular :file:`ndiff.py` utility. This is the only method that | 
 | 588 |    marks differences within lines as well as across lines.  For example, if a line | 
 | 589 |    of expected output contains digit ``1`` where actual output contains letter | 
 | 590 |    ``l``, a line is inserted with a caret marking the mismatching column positions. | 
 | 591 |  | 
 | 592 |  | 
 | 593 | .. data:: REPORT_ONLY_FIRST_FAILURE | 
 | 594 |  | 
 | 595 |    When specified, display the first failing example in each doctest, but suppress | 
 | 596 |    output for all remaining examples.  This will prevent doctest from reporting | 
 | 597 |    correct examples that break because of earlier failures; but it might also hide | 
 | 598 |    incorrect examples that fail independently of the first failure.  When | 
 | 599 |    :const:`REPORT_ONLY_FIRST_FAILURE` is specified, the remaining examples are | 
 | 600 |    still run, and still count towards the total number of failures reported; only | 
 | 601 |    the output is suppressed. | 
 | 602 |  | 
 | 603 |  | 
 | 604 | .. data:: REPORTING_FLAGS | 
 | 605 |  | 
 | 606 |    A bitmask or'ing together all the reporting flags above. | 
 | 607 |  | 
 | 608 | "Doctest directives" may be used to modify the option flags for individual | 
 | 609 | examples.  Doctest directives are expressed as a special Python comment | 
 | 610 | following an example's source code: | 
 | 611 |  | 
 | 612 | .. productionlist:: doctest | 
 | 613 |    directive: "#" "doctest:" `directive_options` | 
 | 614 |    directive_options: `directive_option` ("," `directive_option`)\* | 
 | 615 |    directive_option: `on_or_off` `directive_option_name` | 
 | 616 |    on_or_off: "+" \| "-" | 
 | 617 |    directive_option_name: "DONT_ACCEPT_BLANKLINE" \| "NORMALIZE_WHITESPACE" \| ... | 
 | 618 |  | 
 | 619 | Whitespace is not allowed between the ``+`` or ``-`` and the directive option | 
 | 620 | name.  The directive option name can be any of the option flag names explained | 
 | 621 | above. | 
 | 622 |  | 
 | 623 | An example's doctest directives modify doctest's behavior for that single | 
 | 624 | example.  Use ``+`` to enable the named behavior, or ``-`` to disable it. | 
 | 625 |  | 
 | 626 | For example, this test passes:: | 
 | 627 |  | 
| Georg Brandl | 6911e3c | 2007-09-04 07:15:32 +0000 | [diff] [blame] | 628 |    >>> print(range(20)) #doctest: +NORMALIZE_WHITESPACE | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 629 |    [0,   1,  2,  3,  4,  5,  6,  7,  8,  9, | 
 | 630 |    10,  11, 12, 13, 14, 15, 16, 17, 18, 19] | 
 | 631 |  | 
 | 632 | Without the directive it would fail, both because the actual output doesn't have | 
 | 633 | two blanks before the single-digit list elements, and because the actual output | 
 | 634 | is on a single line.  This test also passes, and also requires a directive to do | 
 | 635 | so:: | 
 | 636 |  | 
| Georg Brandl | 6911e3c | 2007-09-04 07:15:32 +0000 | [diff] [blame] | 637 |    >>> print(range(20)) # doctest: +ELLIPSIS | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 638 |    [0, 1, ..., 18, 19] | 
 | 639 |  | 
 | 640 | Multiple directives can be used on a single physical line, separated by commas:: | 
 | 641 |  | 
| Georg Brandl | 6911e3c | 2007-09-04 07:15:32 +0000 | [diff] [blame] | 642 |    >>> print(range(20)) # doctest: +ELLIPSIS, +NORMALIZE_WHITESPACE | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 643 |    [0,    1, ...,   18,    19] | 
 | 644 |  | 
 | 645 | If multiple directive comments are used for a single example, then they are | 
 | 646 | combined:: | 
 | 647 |  | 
| Georg Brandl | 6911e3c | 2007-09-04 07:15:32 +0000 | [diff] [blame] | 648 |    >>> print(range(20)) # doctest: +ELLIPSIS | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 649 |    ...                 # doctest: +NORMALIZE_WHITESPACE | 
 | 650 |    [0,    1, ...,   18,    19] | 
 | 651 |  | 
 | 652 | As the previous example shows, you can add ``...`` lines to your example | 
 | 653 | containing only directives.  This can be useful when an example is too long for | 
 | 654 | a directive to comfortably fit on the same line:: | 
 | 655 |  | 
| Georg Brandl | 6911e3c | 2007-09-04 07:15:32 +0000 | [diff] [blame] | 656 |    >>> print(range(5) + range(10,20) + range(30,40) + range(50,60)) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 657 |    ... # doctest: +ELLIPSIS | 
 | 658 |    [0, ..., 4, 10, ..., 19, 30, ..., 39, 50, ..., 59] | 
 | 659 |  | 
 | 660 | Note that since all options are disabled by default, and directives apply only | 
 | 661 | to the example they appear in, enabling options (via ``+`` in a directive) is | 
 | 662 | usually the only meaningful choice.  However, option flags can also be passed to | 
 | 663 | functions that run doctests, establishing different defaults.  In such cases, | 
 | 664 | disabling an option via ``-`` in a directive can be useful. | 
 | 665 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 666 |  | 
 | 667 | There's also a way to register new option flag names, although this isn't useful | 
 | 668 | unless you intend to extend :mod:`doctest` internals via subclassing: | 
 | 669 |  | 
 | 670 |  | 
 | 671 | .. function:: register_optionflag(name) | 
 | 672 |  | 
 | 673 |    Create a new option flag with a given name, and return the new flag's integer | 
 | 674 |    value.  :func:`register_optionflag` can be used when subclassing | 
 | 675 |    :class:`OutputChecker` or :class:`DocTestRunner` to create new options that are | 
 | 676 |    supported by your subclasses.  :func:`register_optionflag` should always be | 
 | 677 |    called using the following idiom:: | 
 | 678 |  | 
 | 679 |       MY_FLAG = register_optionflag('MY_FLAG') | 
 | 680 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 681 |  | 
 | 682 | .. _doctest-warnings: | 
 | 683 |  | 
 | 684 | Warnings | 
 | 685 | ^^^^^^^^ | 
 | 686 |  | 
 | 687 | :mod:`doctest` is serious about requiring exact matches in expected output.  If | 
 | 688 | even a single character doesn't match, the test fails.  This will probably | 
 | 689 | surprise you a few times, as you learn exactly what Python does and doesn't | 
 | 690 | guarantee about output.  For example, when printing a dict, Python doesn't | 
 | 691 | guarantee that the key-value pairs will be printed in any particular order, so a | 
| Christian Heimes | 5b5e81c | 2007-12-31 16:14:33 +0000 | [diff] [blame] | 692 | test like :: | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 693 |  | 
 | 694 |    >>> foo() | 
 | 695 |    {"Hermione": "hippogryph", "Harry": "broomstick"} | 
 | 696 |  | 
 | 697 | is vulnerable!  One workaround is to do :: | 
 | 698 |  | 
 | 699 |    >>> foo() == {"Hermione": "hippogryph", "Harry": "broomstick"} | 
 | 700 |    True | 
 | 701 |  | 
 | 702 | instead.  Another is to do :: | 
 | 703 |  | 
 | 704 |    >>> d = foo().items() | 
 | 705 |    >>> d.sort() | 
 | 706 |    >>> d | 
 | 707 |    [('Harry', 'broomstick'), ('Hermione', 'hippogryph')] | 
 | 708 |  | 
 | 709 | There are others, but you get the idea. | 
 | 710 |  | 
 | 711 | Another bad idea is to print things that embed an object address, like :: | 
 | 712 |  | 
 | 713 |    >>> id(1.0) # certain to fail some of the time | 
 | 714 |    7948648 | 
 | 715 |    >>> class C: pass | 
 | 716 |    >>> C()   # the default repr() for instances embeds an address | 
 | 717 |    <__main__.C instance at 0x00AC18F0> | 
 | 718 |  | 
 | 719 | The :const:`ELLIPSIS` directive gives a nice approach for the last example:: | 
 | 720 |  | 
 | 721 |    >>> C() #doctest: +ELLIPSIS | 
 | 722 |    <__main__.C instance at 0x...> | 
 | 723 |  | 
 | 724 | Floating-point numbers are also subject to small output variations across | 
 | 725 | platforms, because Python defers to the platform C library for float formatting, | 
 | 726 | and C libraries vary widely in quality here. :: | 
 | 727 |  | 
 | 728 |    >>> 1./7  # risky | 
 | 729 |    0.14285714285714285 | 
| Georg Brandl | 6911e3c | 2007-09-04 07:15:32 +0000 | [diff] [blame] | 730 |    >>> print(1./7) # safer | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 731 |    0.142857142857 | 
| Georg Brandl | 6911e3c | 2007-09-04 07:15:32 +0000 | [diff] [blame] | 732 |    >>> print(round(1./7, 6)) # much safer | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 733 |    0.142857 | 
 | 734 |  | 
 | 735 | Numbers of the form ``I/2.**J`` are safe across all platforms, and I often | 
 | 736 | contrive doctest examples to produce numbers of that form:: | 
 | 737 |  | 
 | 738 |    >>> 3./4  # utterly safe | 
 | 739 |    0.75 | 
 | 740 |  | 
 | 741 | Simple fractions are also easier for people to understand, and that makes for | 
 | 742 | better documentation. | 
 | 743 |  | 
 | 744 |  | 
 | 745 | .. _doctest-basic-api: | 
 | 746 |  | 
 | 747 | Basic API | 
 | 748 | --------- | 
 | 749 |  | 
 | 750 | The functions :func:`testmod` and :func:`testfile` provide a simple interface to | 
 | 751 | doctest that should be sufficient for most basic uses.  For a less formal | 
 | 752 | introduction to these two functions, see sections :ref:`doctest-simple-testmod` | 
 | 753 | and :ref:`doctest-simple-testfile`. | 
 | 754 |  | 
 | 755 |  | 
 | 756 | .. function:: testfile(filename[, module_relative][, name][, package][, globs][, verbose][, report][, optionflags][, extraglobs][, raise_on_error][, parser][, encoding]) | 
 | 757 |  | 
 | 758 |    All arguments except *filename* are optional, and should be specified in keyword | 
 | 759 |    form. | 
 | 760 |  | 
 | 761 |    Test examples in the file named *filename*.  Return ``(failure_count, | 
 | 762 |    test_count)``. | 
 | 763 |  | 
 | 764 |    Optional argument *module_relative* specifies how the filename should be | 
 | 765 |    interpreted: | 
 | 766 |  | 
 | 767 |    * If *module_relative* is ``True`` (the default), then *filename* specifies an | 
 | 768 |      OS-independent module-relative path.  By default, this path is relative to the | 
 | 769 |      calling module's directory; but if the *package* argument is specified, then it | 
 | 770 |      is relative to that package.  To ensure OS-independence, *filename* should use | 
 | 771 |      ``/`` characters to separate path segments, and may not be an absolute path | 
 | 772 |      (i.e., it may not begin with ``/``). | 
 | 773 |  | 
 | 774 |    * If *module_relative* is ``False``, then *filename* specifies an OS-specific | 
 | 775 |      path.  The path may be absolute or relative; relative paths are resolved with | 
 | 776 |      respect to the current working directory. | 
 | 777 |  | 
 | 778 |    Optional argument *name* gives the name of the test; by default, or if ``None``, | 
 | 779 |    ``os.path.basename(filename)`` is used. | 
 | 780 |  | 
 | 781 |    Optional argument *package* is a Python package or the name of a Python package | 
 | 782 |    whose directory should be used as the base directory for a module-relative | 
 | 783 |    filename.  If no package is specified, then the calling module's directory is | 
 | 784 |    used as the base directory for module-relative filenames.  It is an error to | 
 | 785 |    specify *package* if *module_relative* is ``False``. | 
 | 786 |  | 
 | 787 |    Optional argument *globs* gives a dict to be used as the globals when executing | 
 | 788 |    examples.  A new shallow copy of this dict is created for the doctest, so its | 
 | 789 |    examples start with a clean slate. By default, or if ``None``, a new empty dict | 
 | 790 |    is used. | 
 | 791 |  | 
 | 792 |    Optional argument *extraglobs* gives a dict merged into the globals used to | 
 | 793 |    execute examples.  This works like :meth:`dict.update`:  if *globs* and | 
 | 794 |    *extraglobs* have a common key, the associated value in *extraglobs* appears in | 
 | 795 |    the combined dict.  By default, or if ``None``, no extra globals are used.  This | 
 | 796 |    is an advanced feature that allows parameterization of doctests.  For example, a | 
 | 797 |    doctest can be written for a base class, using a generic name for the class, | 
 | 798 |    then reused to test any number of subclasses by passing an *extraglobs* dict | 
 | 799 |    mapping the generic name to the subclass to be tested. | 
 | 800 |  | 
 | 801 |    Optional argument *verbose* prints lots of stuff if true, and prints only | 
 | 802 |    failures if false; by default, or if ``None``, it's true if and only if ``'-v'`` | 
 | 803 |    is in ``sys.argv``. | 
 | 804 |  | 
 | 805 |    Optional argument *report* prints a summary at the end when true, else prints | 
 | 806 |    nothing at the end.  In verbose mode, the summary is detailed, else the summary | 
 | 807 |    is very brief (in fact, empty if all tests passed). | 
 | 808 |  | 
 | 809 |    Optional argument *optionflags* or's together option flags.  See section | 
 | 810 |    :ref:`doctest-options`. | 
 | 811 |  | 
 | 812 |    Optional argument *raise_on_error* defaults to false.  If true, an exception is | 
 | 813 |    raised upon the first failure or unexpected exception in an example.  This | 
 | 814 |    allows failures to be post-mortem debugged. Default behavior is to continue | 
 | 815 |    running examples. | 
 | 816 |  | 
 | 817 |    Optional argument *parser* specifies a :class:`DocTestParser` (or subclass) that | 
 | 818 |    should be used to extract tests from the files.  It defaults to a normal parser | 
 | 819 |    (i.e., ``DocTestParser()``). | 
 | 820 |  | 
 | 821 |    Optional argument *encoding* specifies an encoding that should be used to | 
 | 822 |    convert the file to unicode. | 
 | 823 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 824 |  | 
 | 825 | .. function:: testmod([m][, name][, globs][, verbose][, report][, optionflags][, extraglobs][, raise_on_error][, exclude_empty]) | 
 | 826 |  | 
 | 827 |    All arguments are optional, and all except for *m* should be specified in | 
 | 828 |    keyword form. | 
 | 829 |  | 
 | 830 |    Test examples in docstrings in functions and classes reachable from module *m* | 
 | 831 |    (or module :mod:`__main__` if *m* is not supplied or is ``None``), starting with | 
 | 832 |    ``m.__doc__``. | 
 | 833 |  | 
 | 834 |    Also test examples reachable from dict ``m.__test__``, if it exists and is not | 
 | 835 |    ``None``.  ``m.__test__`` maps names (strings) to functions, classes and | 
 | 836 |    strings; function and class docstrings are searched for examples; strings are | 
 | 837 |    searched directly, as if they were docstrings. | 
 | 838 |  | 
 | 839 |    Only docstrings attached to objects belonging to module *m* are searched. | 
 | 840 |  | 
 | 841 |    Return ``(failure_count, test_count)``. | 
 | 842 |  | 
 | 843 |    Optional argument *name* gives the name of the module; by default, or if | 
 | 844 |    ``None``, ``m.__name__`` is used. | 
 | 845 |  | 
 | 846 |    Optional argument *exclude_empty* defaults to false.  If true, objects for which | 
 | 847 |    no doctests are found are excluded from consideration. The default is a backward | 
 | 848 |    compatibility hack, so that code still using :meth:`doctest.master.summarize` in | 
 | 849 |    conjunction with :func:`testmod` continues to get output for objects with no | 
 | 850 |    tests. The *exclude_empty* argument to the newer :class:`DocTestFinder` | 
 | 851 |    constructor defaults to true. | 
 | 852 |  | 
 | 853 |    Optional arguments *extraglobs*, *verbose*, *report*, *optionflags*, | 
 | 854 |    *raise_on_error*, and *globs* are the same as for function :func:`testfile` | 
 | 855 |    above, except that *globs* defaults to ``m.__dict__``. | 
 | 856 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 857 |  | 
 | 858 | There's also a function to run the doctests associated with a single object. | 
 | 859 | This function is provided for backward compatibility.  There are no plans to | 
 | 860 | deprecate it, but it's rarely useful: | 
 | 861 |  | 
 | 862 |  | 
 | 863 | .. function:: run_docstring_examples(f, globs[, verbose][, name][, compileflags][, optionflags]) | 
 | 864 |  | 
 | 865 |    Test examples associated with object *f*; for example, *f* may be a module, | 
 | 866 |    function, or class object. | 
 | 867 |  | 
 | 868 |    A shallow copy of dictionary argument *globs* is used for the execution context. | 
 | 869 |  | 
 | 870 |    Optional argument *name* is used in failure messages, and defaults to | 
 | 871 |    ``"NoName"``. | 
 | 872 |  | 
 | 873 |    If optional argument *verbose* is true, output is generated even if there are no | 
 | 874 |    failures.  By default, output is generated only in case of an example failure. | 
 | 875 |  | 
 | 876 |    Optional argument *compileflags* gives the set of flags that should be used by | 
 | 877 |    the Python compiler when running the examples.  By default, or if ``None``, | 
 | 878 |    flags are deduced corresponding to the set of future features found in *globs*. | 
 | 879 |  | 
 | 880 |    Optional argument *optionflags* works as for function :func:`testfile` above. | 
 | 881 |  | 
 | 882 |  | 
 | 883 | .. _doctest-unittest-api: | 
 | 884 |  | 
 | 885 | Unittest API | 
 | 886 | ------------ | 
 | 887 |  | 
 | 888 | As your collection of doctest'ed modules grows, you'll want a way to run all | 
| Georg Brandl | 3183585 | 2008-05-12 17:38:56 +0000 | [diff] [blame] | 889 | their doctests systematically.  :mod:`doctest` provides two functions that can | 
 | 890 | be used to create :mod:`unittest` test suites from modules and text files | 
 | 891 | containing doctests.  These test suites can then be run using :mod:`unittest` | 
 | 892 | test runners:: | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 893 |  | 
 | 894 |    import unittest | 
 | 895 |    import doctest | 
 | 896 |    import my_module_with_doctests, and_another | 
 | 897 |  | 
 | 898 |    suite = unittest.TestSuite() | 
 | 899 |    for mod in my_module_with_doctests, and_another: | 
 | 900 |        suite.addTest(doctest.DocTestSuite(mod)) | 
 | 901 |    runner = unittest.TextTestRunner() | 
 | 902 |    runner.run(suite) | 
 | 903 |  | 
 | 904 | There are two main functions for creating :class:`unittest.TestSuite` instances | 
 | 905 | from text files and modules with doctests: | 
 | 906 |  | 
 | 907 |  | 
 | 908 | .. function:: DocFileSuite([module_relative][, package][, setUp][, tearDown][, globs][, optionflags][, parser][, encoding]) | 
 | 909 |  | 
 | 910 |    Convert doctest tests from one or more text files to a | 
 | 911 |    :class:`unittest.TestSuite`. | 
 | 912 |  | 
 | 913 |    The returned :class:`unittest.TestSuite` is to be run by the unittest framework | 
 | 914 |    and runs the interactive examples in each file.  If an example in any file | 
 | 915 |    fails, then the synthesized unit test fails, and a :exc:`failureException` | 
 | 916 |    exception is raised showing the name of the file containing the test and a | 
 | 917 |    (sometimes approximate) line number. | 
 | 918 |  | 
 | 919 |    Pass one or more paths (as strings) to text files to be examined. | 
 | 920 |  | 
 | 921 |    Options may be provided as keyword arguments: | 
 | 922 |  | 
 | 923 |    Optional argument *module_relative* specifies how the filenames in *paths* | 
 | 924 |    should be interpreted: | 
 | 925 |  | 
 | 926 |    * If *module_relative* is ``True`` (the default), then each filename specifies | 
 | 927 |      an OS-independent module-relative path.  By default, this path is relative to | 
 | 928 |      the calling module's directory; but if the *package* argument is specified, then | 
 | 929 |      it is relative to that package.  To ensure OS-independence, each filename should | 
 | 930 |      use ``/`` characters to separate path segments, and may not be an absolute path | 
 | 931 |      (i.e., it may not begin with ``/``). | 
 | 932 |  | 
 | 933 |    * If *module_relative* is ``False``, then each filename specifies an OS-specific | 
 | 934 |      path.  The path may be absolute or relative; relative paths are resolved with | 
 | 935 |      respect to the current working directory. | 
 | 936 |  | 
 | 937 |    Optional argument *package* is a Python package or the name of a Python package | 
 | 938 |    whose directory should be used as the base directory for module-relative | 
 | 939 |    filenames.  If no package is specified, then the calling module's directory is | 
 | 940 |    used as the base directory for module-relative filenames.  It is an error to | 
 | 941 |    specify *package* if *module_relative* is ``False``. | 
 | 942 |  | 
 | 943 |    Optional argument *setUp* specifies a set-up function for the test suite.  This | 
 | 944 |    is called before running the tests in each file.  The *setUp* function will be | 
 | 945 |    passed a :class:`DocTest` object.  The setUp function can access the test | 
 | 946 |    globals as the *globs* attribute of the test passed. | 
 | 947 |  | 
 | 948 |    Optional argument *tearDown* specifies a tear-down function for the test suite. | 
 | 949 |    This is called after running the tests in each file.  The *tearDown* function | 
 | 950 |    will be passed a :class:`DocTest` object.  The setUp function can access the | 
 | 951 |    test globals as the *globs* attribute of the test passed. | 
 | 952 |  | 
 | 953 |    Optional argument *globs* is a dictionary containing the initial global | 
 | 954 |    variables for the tests.  A new copy of this dictionary is created for each | 
 | 955 |    test.  By default, *globs* is a new empty dictionary. | 
 | 956 |  | 
 | 957 |    Optional argument *optionflags* specifies the default doctest options for the | 
 | 958 |    tests, created by or-ing together individual option flags.  See section | 
 | 959 |    :ref:`doctest-options`. See function :func:`set_unittest_reportflags` below for | 
 | 960 |    a better way to set reporting options. | 
 | 961 |  | 
 | 962 |    Optional argument *parser* specifies a :class:`DocTestParser` (or subclass) that | 
 | 963 |    should be used to extract tests from the files.  It defaults to a normal parser | 
 | 964 |    (i.e., ``DocTestParser()``). | 
 | 965 |  | 
 | 966 |    Optional argument *encoding* specifies an encoding that should be used to | 
 | 967 |    convert the file to unicode. | 
 | 968 |  | 
| Georg Brandl | 55ac8f0 | 2007-09-01 13:51:09 +0000 | [diff] [blame] | 969 |    The global ``__file__`` is added to the globals provided to doctests loaded | 
 | 970 |    from a text file using :func:`DocFileSuite`. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 971 |  | 
 | 972 |  | 
 | 973 | .. function:: DocTestSuite([module][, globs][, extraglobs][, test_finder][, setUp][, tearDown][, checker]) | 
 | 974 |  | 
 | 975 |    Convert doctest tests for a module to a :class:`unittest.TestSuite`. | 
 | 976 |  | 
 | 977 |    The returned :class:`unittest.TestSuite` is to be run by the unittest framework | 
 | 978 |    and runs each doctest in the module.  If any of the doctests fail, then the | 
 | 979 |    synthesized unit test fails, and a :exc:`failureException` exception is raised | 
 | 980 |    showing the name of the file containing the test and a (sometimes approximate) | 
 | 981 |    line number. | 
 | 982 |  | 
 | 983 |    Optional argument *module* provides the module to be tested.  It can be a module | 
 | 984 |    object or a (possibly dotted) module name.  If not specified, the module calling | 
 | 985 |    this function is used. | 
 | 986 |  | 
 | 987 |    Optional argument *globs* is a dictionary containing the initial global | 
 | 988 |    variables for the tests.  A new copy of this dictionary is created for each | 
 | 989 |    test.  By default, *globs* is a new empty dictionary. | 
 | 990 |  | 
 | 991 |    Optional argument *extraglobs* specifies an extra set of global variables, which | 
 | 992 |    is merged into *globs*.  By default, no extra globals are used. | 
 | 993 |  | 
 | 994 |    Optional argument *test_finder* is the :class:`DocTestFinder` object (or a | 
 | 995 |    drop-in replacement) that is used to extract doctests from the module. | 
 | 996 |  | 
 | 997 |    Optional arguments *setUp*, *tearDown*, and *optionflags* are the same as for | 
 | 998 |    function :func:`DocFileSuite` above. | 
 | 999 |  | 
| Georg Brandl | 55ac8f0 | 2007-09-01 13:51:09 +0000 | [diff] [blame] | 1000 |    This function uses the same search technique as :func:`testmod`. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1001 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1002 |  | 
 | 1003 | Under the covers, :func:`DocTestSuite` creates a :class:`unittest.TestSuite` out | 
 | 1004 | of :class:`doctest.DocTestCase` instances, and :class:`DocTestCase` is a | 
 | 1005 | subclass of :class:`unittest.TestCase`. :class:`DocTestCase` isn't documented | 
 | 1006 | here (it's an internal detail), but studying its code can answer questions about | 
 | 1007 | the exact details of :mod:`unittest` integration. | 
 | 1008 |  | 
 | 1009 | Similarly, :func:`DocFileSuite` creates a :class:`unittest.TestSuite` out of | 
 | 1010 | :class:`doctest.DocFileCase` instances, and :class:`DocFileCase` is a subclass | 
 | 1011 | of :class:`DocTestCase`. | 
 | 1012 |  | 
 | 1013 | So both ways of creating a :class:`unittest.TestSuite` run instances of | 
 | 1014 | :class:`DocTestCase`.  This is important for a subtle reason: when you run | 
 | 1015 | :mod:`doctest` functions yourself, you can control the :mod:`doctest` options in | 
 | 1016 | use directly, by passing option flags to :mod:`doctest` functions.  However, if | 
 | 1017 | you're writing a :mod:`unittest` framework, :mod:`unittest` ultimately controls | 
 | 1018 | when and how tests get run.  The framework author typically wants to control | 
 | 1019 | :mod:`doctest` reporting options (perhaps, e.g., specified by command line | 
 | 1020 | options), but there's no way to pass options through :mod:`unittest` to | 
 | 1021 | :mod:`doctest` test runners. | 
 | 1022 |  | 
 | 1023 | For this reason, :mod:`doctest` also supports a notion of :mod:`doctest` | 
 | 1024 | reporting flags specific to :mod:`unittest` support, via this function: | 
 | 1025 |  | 
 | 1026 |  | 
 | 1027 | .. function:: set_unittest_reportflags(flags) | 
 | 1028 |  | 
 | 1029 |    Set the :mod:`doctest` reporting flags to use. | 
 | 1030 |  | 
 | 1031 |    Argument *flags* or's together option flags.  See section | 
 | 1032 |    :ref:`doctest-options`.  Only "reporting flags" can be used. | 
 | 1033 |  | 
 | 1034 |    This is a module-global setting, and affects all future doctests run by module | 
 | 1035 |    :mod:`unittest`:  the :meth:`runTest` method of :class:`DocTestCase` looks at | 
 | 1036 |    the option flags specified for the test case when the :class:`DocTestCase` | 
 | 1037 |    instance was constructed.  If no reporting flags were specified (which is the | 
 | 1038 |    typical and expected case), :mod:`doctest`'s :mod:`unittest` reporting flags are | 
 | 1039 |    or'ed into the option flags, and the option flags so augmented are passed to the | 
 | 1040 |    :class:`DocTestRunner` instance created to run the doctest.  If any reporting | 
 | 1041 |    flags were specified when the :class:`DocTestCase` instance was constructed, | 
 | 1042 |    :mod:`doctest`'s :mod:`unittest` reporting flags are ignored. | 
 | 1043 |  | 
 | 1044 |    The value of the :mod:`unittest` reporting flags in effect before the function | 
 | 1045 |    was called is returned by the function. | 
 | 1046 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1047 |  | 
 | 1048 | .. _doctest-advanced-api: | 
 | 1049 |  | 
 | 1050 | Advanced API | 
 | 1051 | ------------ | 
 | 1052 |  | 
 | 1053 | The basic API is a simple wrapper that's intended to make doctest easy to use. | 
 | 1054 | It is fairly flexible, and should meet most users' needs; however, if you | 
 | 1055 | require more fine-grained control over testing, or wish to extend doctest's | 
 | 1056 | capabilities, then you should use the advanced API. | 
 | 1057 |  | 
 | 1058 | The advanced API revolves around two container classes, which are used to store | 
 | 1059 | the interactive examples extracted from doctest cases: | 
 | 1060 |  | 
| Christian Heimes | d8654cf | 2007-12-02 15:22:16 +0000 | [diff] [blame] | 1061 | * :class:`Example`: A single python :term:`statement`, paired with its expected | 
 | 1062 |   output. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1063 |  | 
 | 1064 | * :class:`DocTest`: A collection of :class:`Example`\ s, typically extracted | 
 | 1065 |   from a single docstring or text file. | 
 | 1066 |  | 
 | 1067 | Additional processing classes are defined to find, parse, and run, and check | 
 | 1068 | doctest examples: | 
 | 1069 |  | 
 | 1070 | * :class:`DocTestFinder`: Finds all docstrings in a given module, and uses a | 
 | 1071 |   :class:`DocTestParser` to create a :class:`DocTest` from every docstring that | 
 | 1072 |   contains interactive examples. | 
 | 1073 |  | 
 | 1074 | * :class:`DocTestParser`: Creates a :class:`DocTest` object from a string (such | 
 | 1075 |   as an object's docstring). | 
 | 1076 |  | 
 | 1077 | * :class:`DocTestRunner`: Executes the examples in a :class:`DocTest`, and uses | 
 | 1078 |   an :class:`OutputChecker` to verify their output. | 
 | 1079 |  | 
 | 1080 | * :class:`OutputChecker`: Compares the actual output from a doctest example with | 
 | 1081 |   the expected output, and decides whether they match. | 
 | 1082 |  | 
 | 1083 | The relationships among these processing classes are summarized in the following | 
 | 1084 | diagram:: | 
 | 1085 |  | 
 | 1086 |                                list of: | 
 | 1087 |    +------+                   +---------+ | 
 | 1088 |    |module| --DocTestFinder-> | DocTest | --DocTestRunner-> results | 
 | 1089 |    +------+    |        ^     +---------+     |       ^    (printed) | 
 | 1090 |                |        |     | Example |     |       | | 
 | 1091 |                v        |     |   ...   |     v       | | 
 | 1092 |               DocTestParser   | Example |   OutputChecker | 
 | 1093 |                               +---------+ | 
 | 1094 |  | 
 | 1095 |  | 
 | 1096 | .. _doctest-doctest: | 
 | 1097 |  | 
 | 1098 | DocTest Objects | 
 | 1099 | ^^^^^^^^^^^^^^^ | 
 | 1100 |  | 
 | 1101 |  | 
 | 1102 | .. class:: DocTest(examples, globs, name, filename, lineno, docstring) | 
 | 1103 |  | 
 | 1104 |    A collection of doctest examples that should be run in a single namespace.  The | 
 | 1105 |    constructor arguments are used to initialize the member variables of the same | 
 | 1106 |    names. | 
 | 1107 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1108 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1109 |    :class:`DocTest` defines the following member variables.  They are initialized by | 
 | 1110 |    the constructor, and should not be modified directly. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1111 |  | 
 | 1112 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1113 |    .. attribute:: examples | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1114 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1115 |       A list of :class:`Example` objects encoding the individual interactive Python | 
 | 1116 |       examples that should be run by this test. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1117 |  | 
 | 1118 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1119 |    .. attribute:: globs | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1120 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1121 |       The namespace (aka globals) that the examples should be run in. This is a | 
 | 1122 |       dictionary mapping names to values.  Any changes to the namespace made by the | 
 | 1123 |       examples (such as binding new variables) will be reflected in :attr:`globs` | 
 | 1124 |       after the test is run. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1125 |  | 
 | 1126 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1127 |    .. attribute:: name | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1128 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1129 |       A string name identifying the :class:`DocTest`.  Typically, this is the name | 
 | 1130 |       of the object or file that the test was extracted from. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1131 |  | 
 | 1132 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1133 |    .. attribute:: filename | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1134 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1135 |       The name of the file that this :class:`DocTest` was extracted from; or | 
 | 1136 |       ``None`` if the filename is unknown, or if the :class:`DocTest` was not | 
 | 1137 |       extracted from a file. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1138 |  | 
 | 1139 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1140 |    .. attribute:: lineno | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1141 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1142 |       The line number within :attr:`filename` where this :class:`DocTest` begins, or | 
 | 1143 |       ``None`` if the line number is unavailable.  This line number is zero-based | 
 | 1144 |       with respect to the beginning of the file. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1145 |  | 
 | 1146 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1147 |    .. attribute:: docstring | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1148 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1149 |       The string that the test was extracted from, or 'None' if the string is | 
 | 1150 |       unavailable, or if the test was not extracted from a string. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1151 |  | 
 | 1152 |  | 
 | 1153 | .. _doctest-example: | 
 | 1154 |  | 
 | 1155 | Example Objects | 
 | 1156 | ^^^^^^^^^^^^^^^ | 
 | 1157 |  | 
 | 1158 |  | 
 | 1159 | .. class:: Example(source, want[, exc_msg][, lineno][, indent][, options]) | 
 | 1160 |  | 
 | 1161 |    A single interactive example, consisting of a Python statement and its expected | 
 | 1162 |    output.  The constructor arguments are used to initialize the member variables | 
 | 1163 |    of the same names. | 
 | 1164 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1165 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1166 |    :class:`Example` defines the following member variables.  They are initialized by | 
 | 1167 |    the constructor, and should not be modified directly. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1168 |  | 
 | 1169 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1170 |    .. attribute:: source | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1171 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1172 |       A string containing the example's source code.  This source code consists of a | 
 | 1173 |       single Python statement, and always ends with a newline; the constructor adds | 
 | 1174 |       a newline when necessary. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1175 |  | 
 | 1176 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1177 |    .. attribute:: want | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1178 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1179 |       The expected output from running the example's source code (either from | 
 | 1180 |       stdout, or a traceback in case of exception).  :attr:`want` ends with a | 
 | 1181 |       newline unless no output is expected, in which case it's an empty string.  The | 
 | 1182 |       constructor adds a newline when necessary. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1183 |  | 
 | 1184 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1185 |    .. attribute:: exc_msg | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1186 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1187 |       The exception message generated by the example, if the example is expected to | 
 | 1188 |       generate an exception; or ``None`` if it is not expected to generate an | 
 | 1189 |       exception.  This exception message is compared against the return value of | 
 | 1190 |       :func:`traceback.format_exception_only`.  :attr:`exc_msg` ends with a newline | 
 | 1191 |       unless it's ``None``.  The constructor adds a newline if needed. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1192 |  | 
 | 1193 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1194 |    .. attribute:: lineno | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1195 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1196 |       The line number within the string containing this example where the example | 
 | 1197 |       begins.  This line number is zero-based with respect to the beginning of the | 
 | 1198 |       containing string. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1199 |  | 
 | 1200 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1201 |    .. attribute:: indent | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1202 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1203 |       The example's indentation in the containing string, i.e., the number of space | 
 | 1204 |       characters that precede the example's first prompt. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1205 |  | 
 | 1206 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1207 |    .. attribute:: options | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1208 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1209 |       A dictionary mapping from option flags to ``True`` or ``False``, which is used | 
 | 1210 |       to override default options for this example.  Any option flags not contained | 
 | 1211 |       in this dictionary are left at their default value (as specified by the | 
 | 1212 |       :class:`DocTestRunner`'s :attr:`optionflags`). By default, no options are set. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1213 |  | 
 | 1214 |  | 
 | 1215 | .. _doctest-doctestfinder: | 
 | 1216 |  | 
 | 1217 | DocTestFinder objects | 
 | 1218 | ^^^^^^^^^^^^^^^^^^^^^ | 
 | 1219 |  | 
 | 1220 |  | 
 | 1221 | .. class:: DocTestFinder([verbose][, parser][, recurse][, exclude_empty]) | 
 | 1222 |  | 
 | 1223 |    A processing class used to extract the :class:`DocTest`\ s that are relevant to | 
 | 1224 |    a given object, from its docstring and the docstrings of its contained objects. | 
 | 1225 |    :class:`DocTest`\ s can currently be extracted from the following object types: | 
 | 1226 |    modules, functions, classes, methods, staticmethods, classmethods, and | 
 | 1227 |    properties. | 
 | 1228 |  | 
 | 1229 |    The optional argument *verbose* can be used to display the objects searched by | 
 | 1230 |    the finder.  It defaults to ``False`` (no output). | 
 | 1231 |  | 
 | 1232 |    The optional argument *parser* specifies the :class:`DocTestParser` object (or a | 
 | 1233 |    drop-in replacement) that is used to extract doctests from docstrings. | 
 | 1234 |  | 
 | 1235 |    If the optional argument *recurse* is false, then :meth:`DocTestFinder.find` | 
 | 1236 |    will only examine the given object, and not any contained objects. | 
 | 1237 |  | 
 | 1238 |    If the optional argument *exclude_empty* is false, then | 
 | 1239 |    :meth:`DocTestFinder.find` will include tests for objects with empty docstrings. | 
 | 1240 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1241 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1242 |    :class:`DocTestFinder` defines the following method: | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1243 |  | 
 | 1244 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1245 |    .. method:: find(obj[, name][, module][, globs][, extraglobs]) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1246 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1247 |       Return a list of the :class:`DocTest`\ s that are defined by *obj*'s | 
 | 1248 |       docstring, or by any of its contained objects' docstrings. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1249 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1250 |       The optional argument *name* specifies the object's name; this name will be | 
 | 1251 |       used to construct names for the returned :class:`DocTest`\ s.  If *name* is | 
 | 1252 |       not specified, then ``obj.__name__`` is used. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1253 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1254 |       The optional parameter *module* is the module that contains the given object. | 
 | 1255 |       If the module is not specified or is None, then the test finder will attempt | 
 | 1256 |       to automatically determine the correct module.  The object's module is used: | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1257 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1258 |       * As a default namespace, if *globs* is not specified. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1259 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1260 |       * To prevent the DocTestFinder from extracting DocTests from objects that are | 
 | 1261 |         imported from other modules.  (Contained objects with modules other than | 
 | 1262 |         *module* are ignored.) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1263 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1264 |       * To find the name of the file containing the object. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1265 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1266 |       * To help find the line number of the object within its file. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1267 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1268 |       If *module* is ``False``, no attempt to find the module will be made.  This is | 
 | 1269 |       obscure, of use mostly in testing doctest itself: if *module* is ``False``, or | 
 | 1270 |       is ``None`` but cannot be found automatically, then all objects are considered | 
 | 1271 |       to belong to the (non-existent) module, so all contained objects will | 
 | 1272 |       (recursively) be searched for doctests. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1273 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1274 |       The globals for each :class:`DocTest` is formed by combining *globs* and | 
 | 1275 |       *extraglobs* (bindings in *extraglobs* override bindings in *globs*).  A new | 
 | 1276 |       shallow copy of the globals dictionary is created for each :class:`DocTest`. | 
 | 1277 |       If *globs* is not specified, then it defaults to the module's *__dict__*, if | 
 | 1278 |       specified, or ``{}`` otherwise.  If *extraglobs* is not specified, then it | 
 | 1279 |       defaults to ``{}``. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1280 |  | 
 | 1281 |  | 
 | 1282 | .. _doctest-doctestparser: | 
 | 1283 |  | 
 | 1284 | DocTestParser objects | 
 | 1285 | ^^^^^^^^^^^^^^^^^^^^^ | 
 | 1286 |  | 
 | 1287 |  | 
 | 1288 | .. class:: DocTestParser() | 
 | 1289 |  | 
 | 1290 |    A processing class used to extract interactive examples from a string, and use | 
 | 1291 |    them to create a :class:`DocTest` object. | 
 | 1292 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1293 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1294 |    :class:`DocTestParser` defines the following methods: | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1295 |  | 
 | 1296 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1297 |    .. method:: get_doctest(string, globs, name, filename, lineno) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1298 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1299 |       Extract all doctest examples from the given string, and collect them into a | 
 | 1300 |       :class:`DocTest` object. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1301 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1302 |       *globs*, *name*, *filename*, and *lineno* are attributes for the new | 
 | 1303 |       :class:`DocTest` object.  See the documentation for :class:`DocTest` for more | 
 | 1304 |       information. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1305 |  | 
 | 1306 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1307 |    .. method:: get_examples(string[, name]) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1308 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1309 |       Extract all doctest examples from the given string, and return them as a list | 
 | 1310 |       of :class:`Example` objects.  Line numbers are 0-based.  The optional argument | 
 | 1311 |       *name* is a name identifying this string, and is only used for error messages. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1312 |  | 
 | 1313 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1314 |    .. method:: parse(string[, name]) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1315 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1316 |       Divide the given string into examples and intervening text, and return them as | 
 | 1317 |       a list of alternating :class:`Example`\ s and strings. Line numbers for the | 
 | 1318 |       :class:`Example`\ s are 0-based.  The optional argument *name* is a name | 
 | 1319 |       identifying this string, and is only used for error messages. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1320 |  | 
 | 1321 |  | 
 | 1322 | .. _doctest-doctestrunner: | 
 | 1323 |  | 
 | 1324 | DocTestRunner objects | 
 | 1325 | ^^^^^^^^^^^^^^^^^^^^^ | 
 | 1326 |  | 
 | 1327 |  | 
 | 1328 | .. class:: DocTestRunner([checker][, verbose][, optionflags]) | 
 | 1329 |  | 
 | 1330 |    A processing class used to execute and verify the interactive examples in a | 
 | 1331 |    :class:`DocTest`. | 
 | 1332 |  | 
 | 1333 |    The comparison between expected outputs and actual outputs is done by an | 
 | 1334 |    :class:`OutputChecker`.  This comparison may be customized with a number of | 
 | 1335 |    option flags; see section :ref:`doctest-options` for more information.  If the | 
 | 1336 |    option flags are insufficient, then the comparison may also be customized by | 
 | 1337 |    passing a subclass of :class:`OutputChecker` to the constructor. | 
 | 1338 |  | 
 | 1339 |    The test runner's display output can be controlled in two ways. First, an output | 
 | 1340 |    function can be passed to :meth:`TestRunner.run`; this function will be called | 
 | 1341 |    with strings that should be displayed.  It defaults to ``sys.stdout.write``.  If | 
 | 1342 |    capturing the output is not sufficient, then the display output can be also | 
 | 1343 |    customized by subclassing DocTestRunner, and overriding the methods | 
 | 1344 |    :meth:`report_start`, :meth:`report_success`, | 
 | 1345 |    :meth:`report_unexpected_exception`, and :meth:`report_failure`. | 
 | 1346 |  | 
 | 1347 |    The optional keyword argument *checker* specifies the :class:`OutputChecker` | 
 | 1348 |    object (or drop-in replacement) that should be used to compare the expected | 
 | 1349 |    outputs to the actual outputs of doctest examples. | 
 | 1350 |  | 
 | 1351 |    The optional keyword argument *verbose* controls the :class:`DocTestRunner`'s | 
 | 1352 |    verbosity.  If *verbose* is ``True``, then information is printed about each | 
 | 1353 |    example, as it is run.  If *verbose* is ``False``, then only failures are | 
 | 1354 |    printed.  If *verbose* is unspecified, or ``None``, then verbose output is used | 
 | 1355 |    iff the command-line switch :option:`-v` is used. | 
 | 1356 |  | 
 | 1357 |    The optional keyword argument *optionflags* can be used to control how the test | 
 | 1358 |    runner compares expected output to actual output, and how it displays failures. | 
 | 1359 |    For more information, see section :ref:`doctest-options`. | 
 | 1360 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1361 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1362 |    :class:`DocTestParser` defines the following methods: | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1363 |  | 
 | 1364 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1365 |    .. method:: report_start(out, test, example) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1366 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1367 |       Report that the test runner is about to process the given example. This method | 
 | 1368 |       is provided to allow subclasses of :class:`DocTestRunner` to customize their | 
 | 1369 |       output; it should not be called directly. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1370 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1371 |       *example* is the example about to be processed.  *test* is the test | 
 | 1372 |       *containing example*.  *out* is the output function that was passed to | 
 | 1373 |       :meth:`DocTestRunner.run`. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1374 |  | 
 | 1375 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1376 |    .. method:: report_success(out, test, example, got) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1377 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1378 |       Report that the given example ran successfully.  This method is provided to | 
 | 1379 |       allow subclasses of :class:`DocTestRunner` to customize their output; it | 
 | 1380 |       should not be called directly. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1381 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1382 |       *example* is the example about to be processed.  *got* is the actual output | 
 | 1383 |       from the example.  *test* is the test containing *example*.  *out* is the | 
 | 1384 |       output function that was passed to :meth:`DocTestRunner.run`. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1385 |  | 
 | 1386 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1387 |    .. method:: report_failure(out, test, example, got) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1388 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1389 |       Report that the given example failed.  This method is provided to allow | 
 | 1390 |       subclasses of :class:`DocTestRunner` to customize their output; it should not | 
 | 1391 |       be called directly. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1392 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1393 |       *example* is the example about to be processed.  *got* is the actual output | 
 | 1394 |       from the example.  *test* is the test containing *example*.  *out* is the | 
 | 1395 |       output function that was passed to :meth:`DocTestRunner.run`. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1396 |  | 
 | 1397 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1398 |    .. method:: report_unexpected_exception(out, test, example, exc_info) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1399 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1400 |       Report that the given example raised an unexpected exception. This method is | 
 | 1401 |       provided to allow subclasses of :class:`DocTestRunner` to customize their | 
 | 1402 |       output; it should not be called directly. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1403 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1404 |       *example* is the example about to be processed. *exc_info* is a tuple | 
 | 1405 |       containing information about the unexpected exception (as returned by | 
 | 1406 |       :func:`sys.exc_info`). *test* is the test containing *example*.  *out* is the | 
 | 1407 |       output function that was passed to :meth:`DocTestRunner.run`. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1408 |  | 
 | 1409 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1410 |    .. method:: run(test[, compileflags][, out][, clear_globs]) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1411 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1412 |       Run the examples in *test* (a :class:`DocTest` object), and display the | 
 | 1413 |       results using the writer function *out*. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1414 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1415 |       The examples are run in the namespace ``test.globs``.  If *clear_globs* is | 
 | 1416 |       true (the default), then this namespace will be cleared after the test runs, | 
 | 1417 |       to help with garbage collection. If you would like to examine the namespace | 
 | 1418 |       after the test completes, then use *clear_globs=False*. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1419 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1420 |       *compileflags* gives the set of flags that should be used by the Python | 
 | 1421 |       compiler when running the examples.  If not specified, then it will default to | 
 | 1422 |       the set of future-import flags that apply to *globs*. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1423 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1424 |       The output of each example is checked using the :class:`DocTestRunner`'s | 
 | 1425 |       output checker, and the results are formatted by the | 
 | 1426 |       :meth:`DocTestRunner.report_\*` methods. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1427 |  | 
 | 1428 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1429 |    .. method:: summarize([verbose]) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1430 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1431 |       Print a summary of all the test cases that have been run by this DocTestRunner, | 
 | 1432 |       and return a :term:`named tuple` ``TestResults(failed, attempted)``. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1433 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1434 |       The optional *verbose* argument controls how detailed the summary is.  If the | 
 | 1435 |       verbosity is not specified, then the :class:`DocTestRunner`'s verbosity is | 
 | 1436 |       used. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1437 |  | 
 | 1438 | .. _doctest-outputchecker: | 
 | 1439 |  | 
 | 1440 | OutputChecker objects | 
 | 1441 | ^^^^^^^^^^^^^^^^^^^^^ | 
 | 1442 |  | 
 | 1443 |  | 
 | 1444 | .. class:: OutputChecker() | 
 | 1445 |  | 
 | 1446 |    A class used to check the whether the actual output from a doctest example | 
 | 1447 |    matches the expected output.  :class:`OutputChecker` defines two methods: | 
 | 1448 |    :meth:`check_output`, which compares a given pair of outputs, and returns true | 
 | 1449 |    if they match; and :meth:`output_difference`, which returns a string describing | 
 | 1450 |    the differences between two outputs. | 
 | 1451 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1452 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1453 |    :class:`OutputChecker` defines the following methods: | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1454 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1455 |    .. method:: check_output(want, got, optionflags) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1456 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1457 |       Return ``True`` iff the actual output from an example (*got*) matches the | 
 | 1458 |       expected output (*want*).  These strings are always considered to match if | 
 | 1459 |       they are identical; but depending on what option flags the test runner is | 
 | 1460 |       using, several non-exact match types are also possible.  See section | 
 | 1461 |       :ref:`doctest-options` for more information about option flags. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1462 |  | 
 | 1463 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1464 |    .. method:: output_difference(example, got, optionflags) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1465 |  | 
| Benjamin Peterson | e41251e | 2008-04-25 01:59:09 +0000 | [diff] [blame] | 1466 |       Return a string describing the differences between the expected output for a | 
 | 1467 |       given example (*example*) and the actual output (*got*).  *optionflags* is the | 
 | 1468 |       set of option flags used to compare *want* and *got*. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1469 |  | 
 | 1470 |  | 
 | 1471 | .. _doctest-debugging: | 
 | 1472 |  | 
 | 1473 | Debugging | 
 | 1474 | --------- | 
 | 1475 |  | 
 | 1476 | Doctest provides several mechanisms for debugging doctest examples: | 
 | 1477 |  | 
 | 1478 | * Several functions convert doctests to executable Python programs, which can be | 
 | 1479 |   run under the Python debugger, :mod:`pdb`. | 
 | 1480 |  | 
 | 1481 | * The :class:`DebugRunner` class is a subclass of :class:`DocTestRunner` that | 
 | 1482 |   raises an exception for the first failing example, containing information about | 
 | 1483 |   that example. This information can be used to perform post-mortem debugging on | 
 | 1484 |   the example. | 
 | 1485 |  | 
 | 1486 | * The :mod:`unittest` cases generated by :func:`DocTestSuite` support the | 
 | 1487 |   :meth:`debug` method defined by :class:`unittest.TestCase`. | 
 | 1488 |  | 
 | 1489 | * You can add a call to :func:`pdb.set_trace` in a doctest example, and you'll | 
 | 1490 |   drop into the Python debugger when that line is executed.  Then you can inspect | 
 | 1491 |   current values of variables, and so on.  For example, suppose :file:`a.py` | 
 | 1492 |   contains just this module docstring:: | 
 | 1493 |  | 
 | 1494 |      """ | 
 | 1495 |      >>> def f(x): | 
 | 1496 |      ...     g(x*2) | 
 | 1497 |      >>> def g(x): | 
| Georg Brandl | 6911e3c | 2007-09-04 07:15:32 +0000 | [diff] [blame] | 1498 |      ...     print(x+3) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1499 |      ...     import pdb; pdb.set_trace() | 
 | 1500 |      >>> f(3) | 
 | 1501 |      9 | 
 | 1502 |      """ | 
 | 1503 |  | 
 | 1504 |   Then an interactive Python session may look like this:: | 
 | 1505 |  | 
 | 1506 |      >>> import a, doctest | 
 | 1507 |      >>> doctest.testmod(a) | 
 | 1508 |      --Return-- | 
 | 1509 |      > <doctest a[1]>(3)g()->None | 
 | 1510 |      -> import pdb; pdb.set_trace() | 
 | 1511 |      (Pdb) list | 
 | 1512 |        1     def g(x): | 
| Georg Brandl | 6911e3c | 2007-09-04 07:15:32 +0000 | [diff] [blame] | 1513 |        2         print(x+3) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1514 |        3  ->     import pdb; pdb.set_trace() | 
 | 1515 |      [EOF] | 
| Georg Brandl | 6911e3c | 2007-09-04 07:15:32 +0000 | [diff] [blame] | 1516 |      (Pdb) p x | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1517 |      6 | 
 | 1518 |      (Pdb) step | 
 | 1519 |      --Return-- | 
 | 1520 |      > <doctest a[0]>(2)f()->None | 
 | 1521 |      -> g(x*2) | 
 | 1522 |      (Pdb) list | 
 | 1523 |        1     def f(x): | 
 | 1524 |        2  ->     g(x*2) | 
 | 1525 |      [EOF] | 
| Georg Brandl | 6911e3c | 2007-09-04 07:15:32 +0000 | [diff] [blame] | 1526 |      (Pdb) p x | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1527 |      3 | 
 | 1528 |      (Pdb) step | 
 | 1529 |      --Return-- | 
 | 1530 |      > <doctest a[2]>(1)?()->None | 
 | 1531 |      -> f(3) | 
 | 1532 |      (Pdb) cont | 
 | 1533 |      (0, 3) | 
 | 1534 |      >>> | 
 | 1535 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1536 |  | 
 | 1537 | Functions that convert doctests to Python code, and possibly run the synthesized | 
 | 1538 | code under the debugger: | 
 | 1539 |  | 
 | 1540 |  | 
 | 1541 | .. function:: script_from_examples(s) | 
 | 1542 |  | 
 | 1543 |    Convert text with examples to a script. | 
 | 1544 |  | 
 | 1545 |    Argument *s* is a string containing doctest examples.  The string is converted | 
 | 1546 |    to a Python script, where doctest examples in *s* are converted to regular code, | 
 | 1547 |    and everything else is converted to Python comments.  The generated script is | 
 | 1548 |    returned as a string. For example, :: | 
 | 1549 |  | 
 | 1550 |       import doctest | 
| Georg Brandl | 6911e3c | 2007-09-04 07:15:32 +0000 | [diff] [blame] | 1551 |       print(doctest.script_from_examples(r""" | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1552 |           Set x and y to 1 and 2. | 
 | 1553 |           >>> x, y = 1, 2 | 
 | 1554 |  | 
 | 1555 |           Print their sum: | 
| Georg Brandl | 6911e3c | 2007-09-04 07:15:32 +0000 | [diff] [blame] | 1556 |           >>> print(x+y) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1557 |           3 | 
| Georg Brandl | 6911e3c | 2007-09-04 07:15:32 +0000 | [diff] [blame] | 1558 |       """)) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1559 |  | 
 | 1560 |    displays:: | 
 | 1561 |  | 
 | 1562 |       # Set x and y to 1 and 2. | 
 | 1563 |       x, y = 1, 2 | 
 | 1564 |       # | 
 | 1565 |       # Print their sum: | 
| Georg Brandl | 6911e3c | 2007-09-04 07:15:32 +0000 | [diff] [blame] | 1566 |       print(x+y) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1567 |       # Expected: | 
 | 1568 |       ## 3 | 
 | 1569 |  | 
 | 1570 |    This function is used internally by other functions (see below), but can also be | 
 | 1571 |    useful when you want to transform an interactive Python session into a Python | 
 | 1572 |    script. | 
 | 1573 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1574 |  | 
 | 1575 | .. function:: testsource(module, name) | 
 | 1576 |  | 
 | 1577 |    Convert the doctest for an object to a script. | 
 | 1578 |  | 
 | 1579 |    Argument *module* is a module object, or dotted name of a module, containing the | 
 | 1580 |    object whose doctests are of interest.  Argument *name* is the name (within the | 
 | 1581 |    module) of the object with the doctests of interest.  The result is a string, | 
 | 1582 |    containing the object's docstring converted to a Python script, as described for | 
 | 1583 |    :func:`script_from_examples` above.  For example, if module :file:`a.py` | 
 | 1584 |    contains a top-level function :func:`f`, then :: | 
 | 1585 |  | 
 | 1586 |       import a, doctest | 
| Georg Brandl | 6911e3c | 2007-09-04 07:15:32 +0000 | [diff] [blame] | 1587 |       print(doctest.testsource(a, "a.f")) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1588 |  | 
 | 1589 |    prints a script version of function :func:`f`'s docstring, with doctests | 
 | 1590 |    converted to code, and the rest placed in comments. | 
 | 1591 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1592 |  | 
 | 1593 | .. function:: debug(module, name[, pm]) | 
 | 1594 |  | 
 | 1595 |    Debug the doctests for an object. | 
 | 1596 |  | 
 | 1597 |    The *module* and *name* arguments are the same as for function | 
 | 1598 |    :func:`testsource` above.  The synthesized Python script for the named object's | 
 | 1599 |    docstring is written to a temporary file, and then that file is run under the | 
 | 1600 |    control of the Python debugger, :mod:`pdb`. | 
 | 1601 |  | 
 | 1602 |    A shallow copy of ``module.__dict__`` is used for both local and global | 
 | 1603 |    execution context. | 
 | 1604 |  | 
 | 1605 |    Optional argument *pm* controls whether post-mortem debugging is used.  If *pm* | 
 | 1606 |    has a true value, the script file is run directly, and the debugger gets | 
 | 1607 |    involved only if the script terminates via raising an unhandled exception.  If | 
 | 1608 |    it does, then post-mortem debugging is invoked, via :func:`pdb.post_mortem`, | 
 | 1609 |    passing the traceback object from the unhandled exception.  If *pm* is not | 
 | 1610 |    specified, or is false, the script is run under the debugger from the start, via | 
 | 1611 |    passing an appropriate :func:`exec` call to :func:`pdb.run`. | 
 | 1612 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1613 |  | 
 | 1614 | .. function:: debug_src(src[, pm][, globs]) | 
 | 1615 |  | 
 | 1616 |    Debug the doctests in a string. | 
 | 1617 |  | 
 | 1618 |    This is like function :func:`debug` above, except that a string containing | 
 | 1619 |    doctest examples is specified directly, via the *src* argument. | 
 | 1620 |  | 
 | 1621 |    Optional argument *pm* has the same meaning as in function :func:`debug` above. | 
 | 1622 |  | 
 | 1623 |    Optional argument *globs* gives a dictionary to use as both local and global | 
 | 1624 |    execution context.  If not specified, or ``None``, an empty dictionary is used. | 
 | 1625 |    If specified, a shallow copy of the dictionary is used. | 
 | 1626 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1627 |  | 
 | 1628 | The :class:`DebugRunner` class, and the special exceptions it may raise, are of | 
 | 1629 | most interest to testing framework authors, and will only be sketched here.  See | 
 | 1630 | the source code, and especially :class:`DebugRunner`'s docstring (which is a | 
 | 1631 | doctest!) for more details: | 
 | 1632 |  | 
 | 1633 |  | 
 | 1634 | .. class:: DebugRunner([checker][, verbose][, optionflags]) | 
 | 1635 |  | 
 | 1636 |    A subclass of :class:`DocTestRunner` that raises an exception as soon as a | 
 | 1637 |    failure is encountered.  If an unexpected exception occurs, an | 
 | 1638 |    :exc:`UnexpectedException` exception is raised, containing the test, the | 
 | 1639 |    example, and the original exception.  If the output doesn't match, then a | 
 | 1640 |    :exc:`DocTestFailure` exception is raised, containing the test, the example, and | 
 | 1641 |    the actual output. | 
 | 1642 |  | 
 | 1643 |    For information about the constructor parameters and methods, see the | 
 | 1644 |    documentation for :class:`DocTestRunner` in section :ref:`doctest-advanced-api`. | 
 | 1645 |  | 
 | 1646 | There are two exceptions that may be raised by :class:`DebugRunner` instances: | 
 | 1647 |  | 
 | 1648 |  | 
 | 1649 | .. exception:: DocTestFailure(test, example, got) | 
 | 1650 |  | 
 | 1651 |    An exception thrown by :class:`DocTestRunner` to signal that a doctest example's | 
 | 1652 |    actual output did not match its expected output. The constructor arguments are | 
 | 1653 |    used to initialize the member variables of the same names. | 
 | 1654 |  | 
 | 1655 | :exc:`DocTestFailure` defines the following member variables: | 
 | 1656 |  | 
 | 1657 |  | 
 | 1658 | .. attribute:: DocTestFailure.test | 
 | 1659 |  | 
 | 1660 |    The :class:`DocTest` object that was being run when the example failed. | 
 | 1661 |  | 
 | 1662 |  | 
 | 1663 | .. attribute:: DocTestFailure.example | 
 | 1664 |  | 
 | 1665 |    The :class:`Example` that failed. | 
 | 1666 |  | 
 | 1667 |  | 
 | 1668 | .. attribute:: DocTestFailure.got | 
 | 1669 |  | 
 | 1670 |    The example's actual output. | 
 | 1671 |  | 
 | 1672 |  | 
 | 1673 | .. exception:: UnexpectedException(test, example, exc_info) | 
 | 1674 |  | 
 | 1675 |    An exception thrown by :class:`DocTestRunner` to signal that a doctest example | 
 | 1676 |    raised an unexpected exception.  The constructor arguments are used to | 
 | 1677 |    initialize the member variables of the same names. | 
 | 1678 |  | 
 | 1679 | :exc:`UnexpectedException` defines the following member variables: | 
 | 1680 |  | 
 | 1681 |  | 
 | 1682 | .. attribute:: UnexpectedException.test | 
 | 1683 |  | 
 | 1684 |    The :class:`DocTest` object that was being run when the example failed. | 
 | 1685 |  | 
 | 1686 |  | 
 | 1687 | .. attribute:: UnexpectedException.example | 
 | 1688 |  | 
 | 1689 |    The :class:`Example` that failed. | 
 | 1690 |  | 
 | 1691 |  | 
 | 1692 | .. attribute:: UnexpectedException.exc_info | 
 | 1693 |  | 
 | 1694 |    A tuple containing information about the unexpected exception, as returned by | 
 | 1695 |    :func:`sys.exc_info`. | 
 | 1696 |  | 
 | 1697 |  | 
 | 1698 | .. _doctest-soapbox: | 
 | 1699 |  | 
 | 1700 | Soapbox | 
 | 1701 | ------- | 
 | 1702 |  | 
 | 1703 | As mentioned in the introduction, :mod:`doctest` has grown to have three primary | 
 | 1704 | uses: | 
 | 1705 |  | 
 | 1706 | #. Checking examples in docstrings. | 
 | 1707 |  | 
 | 1708 | #. Regression testing. | 
 | 1709 |  | 
 | 1710 | #. Executable documentation / literate testing. | 
 | 1711 |  | 
 | 1712 | These uses have different requirements, and it is important to distinguish them. | 
 | 1713 | In particular, filling your docstrings with obscure test cases makes for bad | 
 | 1714 | documentation. | 
 | 1715 |  | 
 | 1716 | When writing a docstring, choose docstring examples with care. There's an art to | 
 | 1717 | this that needs to be learned---it may not be natural at first.  Examples should | 
 | 1718 | add genuine value to the documentation.  A good example can often be worth many | 
 | 1719 | words. If done with care, the examples will be invaluable for your users, and | 
 | 1720 | will pay back the time it takes to collect them many times over as the years go | 
 | 1721 | by and things change.  I'm still amazed at how often one of my :mod:`doctest` | 
 | 1722 | examples stops working after a "harmless" change. | 
 | 1723 |  | 
 | 1724 | Doctest also makes an excellent tool for regression testing, especially if you | 
 | 1725 | don't skimp on explanatory text.  By interleaving prose and examples, it becomes | 
 | 1726 | much easier to keep track of what's actually being tested, and why.  When a test | 
 | 1727 | fails, good prose can make it much easier to figure out what the problem is, and | 
 | 1728 | how it should be fixed.  It's true that you could write extensive comments in | 
 | 1729 | code-based testing, but few programmers do. Many have found that using doctest | 
 | 1730 | approaches instead leads to much clearer tests.  Perhaps this is simply because | 
 | 1731 | doctest makes writing prose a little easier than writing code, while writing | 
 | 1732 | comments in code is a little harder.  I think it goes deeper than just that: | 
 | 1733 | the natural attitude when writing a doctest-based test is that you want to | 
 | 1734 | explain the fine points of your software, and illustrate them with examples. | 
 | 1735 | This in turn naturally leads to test files that start with the simplest | 
 | 1736 | features, and logically progress to complications and edge cases.  A coherent | 
 | 1737 | narrative is the result, instead of a collection of isolated functions that test | 
 | 1738 | isolated bits of functionality seemingly at random.  It's a different attitude, | 
 | 1739 | and produces different results, blurring the distinction between testing and | 
 | 1740 | explaining. | 
 | 1741 |  | 
 | 1742 | Regression testing is best confined to dedicated objects or files.  There are | 
 | 1743 | several options for organizing tests: | 
 | 1744 |  | 
 | 1745 | * Write text files containing test cases as interactive examples, and test the | 
 | 1746 |   files using :func:`testfile` or :func:`DocFileSuite`.  This is recommended, | 
 | 1747 |   although is easiest to do for new projects, designed from the start to use | 
 | 1748 |   doctest. | 
 | 1749 |  | 
 | 1750 | * Define functions named ``_regrtest_topic`` that consist of single docstrings, | 
 | 1751 |   containing test cases for the named topics.  These functions can be included in | 
 | 1752 |   the same file as the module, or separated out into a separate test file. | 
 | 1753 |  | 
 | 1754 | * Define a ``__test__`` dictionary mapping from regression test topics to | 
 | 1755 |   docstrings containing test cases. | 
 | 1756 |  | 
 | 1757 | .. rubric:: Footnotes | 
 | 1758 |  | 
 | 1759 | .. [#] Examples containing both expected output and an exception are not supported. | 
 | 1760 |    Trying to guess where one ends and the other begins is too error-prone, and that | 
 | 1761 |    also makes for a confusing test. | 
 | 1762 |  |