The DebugRunner class is accessible via the formencode.util.doctest24 module.
If an unexpected exception occurs, an UnexpectedException is raised. It contains the test, the example, and the original exception:
>>> runner = DebugRunner(verbose=False) >>> test = DocTestParser().get_doctest('>>> raise KeyError\n42', ... {}, 'foo', 'foo.py', 0) >>> try: ... runner.run(test) ... except UnexpectedException, failure: ... pass>>> failure.test is test True>>> failure.example.want '42\n'>>> exc_info = failure.exc_info >>> raise exc_info[0], exc_info[1], exc_info[2] Traceback (most recent call last): ... KeyError
We wrap the original exception to give the calling application access to the test and example information.
If the output doesn't match, then a DocTestFailure is raised:
>>> test = DocTestParser().get_doctest(''' ... >>> x = 1 ... >>> x ... 2 ... ''', {}, 'foo', 'foo.py', 0)>>> try: ... runner.run(test) ... except DocTestFailure, failure: ... pass
DocTestFailure objects provide access to the test:
>>> failure.test is test True
As well as to the example:
>>> failure.example.want '2\n'
and the actual output:
>>> failure.got '1\n'
If a failure or error occurs, the globals are left intact:
>>> del test.globs['__builtins__'] >>> test.globs {'x': 1}>>> test = DocTestParser().get_doctest(''' ... >>> x = 2 ... >>> raise KeyError ... ''', {}, 'foo', 'foo.py', 0)>>> runner.run(test) Traceback (most recent call last): ... UnexpectedException: <DocTest foo from foo.py:0 (2 examples)>>>> del test.globs['__builtins__'] >>> test.globs {'x': 2}
But the globals are cleared if there is no error:
>>> test = DocTestParser().get_doctest(''' ... >>> x = 2 ... ''', {}, 'foo', 'foo.py', 0)>>> runner.run(test) (0, 1)>>> test.globs {}
Create a new test runner.
Optional keyword arg checker is the OutputChecker that should be used to compare the expected outputs and actual outputs of doctest examples.
Optional keyword arg 'verbose' prints lots of stuff if true, only failures if false; by default, it's true iff '-v' is in sys.argv.
Optional argument optionflags can be used to control how the test runner compares expected output to actual output, and how it displays failures. See the documentation for testmod for more information.
Report that the test runner is about to process the given example. (Only displays a message if verbose=True)
Report that the given example ran successfully. (Only displays a message if verbose=True)
Print a summary of all the test cases that have been run by this DocTestRunner, and return a tuple (f, t) , where f is the total number of failed examples, and t is the total number of tried examples.
The optional verbose argument controls how detailed the summary is. If the verbosity is not specified, then the DocTestRunner's verbosity is used.
See the source for more information.