_ClassType DebugRunner
DocTestRunner --+
|
DebugRunner
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
{}
|
run(self,
test,
compileflags=None,
out=None,
clear_globs=True)
Run the examples in test, and display the results using the
writer function out . |
|
|
|
|
|
report_failure(self,
out,
test,
example,
got)
Report that the given example failed. |
|
|
Inherited from DocTestRunner :
__init__ ,
merge ,
report_start ,
report_success ,
summarize
|
run(self,
test,
compileflags=None,
out=None,
clear_globs=True)
|
|
Run the examples in test, and display the results using the
writer function out .
The examples are run in the namespace test.globs . If
clear\_globs is true (the default), then this namespace will
be cleared after the test runs, to help with garbage
collection. If you would like to examine the namespace after
the test completes, then use clear\_globs=False .
compileflags gives the set of flags that should be used by
the Python compiler when running the examples. If not
specified, then it will default to the set of future-import
flags that apply to globs .
The output of each example is checked using
DocTestRunner.check\_output , and the results are formatted by
the DocTestRunner.report\_* methods.
- Overrides:
DocTestRunner.run
- (inherited documentation)
|
report_failure(self,
out,
test,
example,
got)
|
|
Report that the given example failed.
- Overrides:
DocTestRunner.report_failure
- (inherited documentation)
|