def testmod(m=None, name=None, globs=None, verbose=None, isprivate=None, |
report=True, optionflags=0, extraglobs=None, |
raise_on_error=False, exclude_empty=False): |
"""m=None, name=None, globs=None, verbose=None, isprivate=None, |
report=True, optionflags=0, extraglobs=None, raise_on_error=False, |
exclude_empty=False |
|
Test examples in docstrings in functions and classes reachable |
from module m (or the current module if m is not supplied), starting |
with m.__doc__. Unless isprivate is specified, private names |
are not skipped. |
|
Also test examples reachable from dict m.__test__ if it exists and is |
not None. m.__test__ maps names to functions, classes and strings; |
function and class docstrings are tested even if the name is private; |
strings are tested directly, as if they were docstrings. |
|
Return (#failures, #tests). |
|
See doctest.__doc__ for an overview. |
|
Optional keyword arg "name" gives the name of the module; by default |
use m.__name__. |
|
Optional keyword arg "globs" gives a dict to be used as the globals |
when executing examples; by default, use m.__dict__. A copy of this |
dict is actually used for each docstring, so that each docstring's |
examples start with a clean slate. |
|
Optional keyword arg "extraglobs" gives a dictionary that should be |
merged into the globals that are used to execute examples. By |
default, no extra globals are used. This is new in 2.4. |
|
Optional keyword arg "verbose" prints lots of stuff if true, prints |
only failures if false; by default, it's true iff "-v" is in sys.argv. |
|
Optional keyword arg "report" prints a summary at the end when true, |
else prints nothing at the end. In verbose mode, the summary is |
detailed, else very brief (in fact, empty if all tests passed). |
|
Optional keyword arg "optionflags" or's together module constants, |
and defaults to 0. This is new in 2.3. Possible values (see the |
docs for details): |
|
DONT_ACCEPT_TRUE_FOR_1 |
DONT_ACCEPT_BLANKLINE |
NORMALIZE_WHITESPACE |
ELLIPSIS |
IGNORE_EXCEPTION_DETAIL |
REPORT_UDIFF |
REPORT_CDIFF |
REPORT_NDIFF |
REPORT_ONLY_FIRST_FAILURE |
|
Optional keyword arg "raise_on_error" raises an exception on the |
first unexpected exception or failure. This allows failures to be |
post-mortem debugged. |
|
Deprecated in Python 2.4: |
Optional keyword arg "isprivate" specifies a function used to |
determine whether a name is private. The default function is |
treat all functions as public. Optionally, "isprivate" can be |
set to doctest.is_private to skip over functions marked as private |
using the underscore naming convention; see its docs for details. |
|
Advanced tomfoolery: testmod runs methods of a local instance of |
class doctest.Tester, then merges the results into (or creates) |
global Tester instance doctest.master. Methods of doctest.master |
can be called directly too, if you want to do something unusual. |
Passing report=0 to testmod is especially useful then, to delay |
displaying a summary. Invoke doctest.master.summarize(verbose) |
when you're done fiddling. |
""" |
global master |
|
if isprivate is not None: |
warnings.warn("the isprivate argument is deprecated; " |
"examine DocTestFinder.find() lists instead", |
DeprecationWarning) |
|
|
if m is None: |
|
|
|
m = sys.modules.get('__main__') |
|
|
if not inspect.ismodule(m): |
raise TypeError("testmod: module required; %r" % (m,)) |
|
|
if name is None: |
name = m.__name__ |
|
|
finder = DocTestFinder(_namefilter=isprivate, exclude_empty=exclude_empty) |
|
if raise_on_error: |
runner = DebugRunner(verbose=verbose, optionflags=optionflags) |
else: |
-> runner = DocTestRunner(verbose=verbose, optionflags=optionflags) |
|
for test in finder.find(m, name, globs=globs, extraglobs=extraglobs): |
runner.run(test) |
|
if report: |
runner.summarize() |
|
if master is None: |
master = runner |
else: |
master.merge(runner) |
|
return runner.failures, runner.tries |