Run doc tests but raise an exception as soon as there is a failure.
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 {}
There are no implemented interfaces.
DIVIDER
(type:
str
)
'**********************************************************************'
merge(other)
report_failure(out, test, example, got)
report_start(out, test, example)
Report that the test runner is about to process the given example. (Only displays a message if verbose=True)
report_success(out, test, example, got)
Report that the given example ran successfully. (Only displays a message if verbose=True)
report_unexpected_exception(out, test, example, exc_info)
run(test, compileflags=None, out=None, clear_globs=True)
summarize(verbose=None)
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.
There are no known subclasses.