"""
def __init__(self, verbose=False, parser=DocTestParser(),
- recurse=True, _namefilter=None,
- exclude_empty=False):
+ recurse=True, _namefilter=None, exclude_empty=True):
"""
Create a new doctest finder.
If the optional argument `recurse` is false, then `find` will
only examine the given object, and not any contained objects.
- If the optional argument `exclude_empty` is true, then `find`
- will exclude tests for objects with empty docstrings.
+ If the optional argument `exclude_empty` is false, then `find`
+ will include tests for objects with empty docstrings.
"""
self._parser = parser
self._verbose = verbose
def testmod(m=None, name=None, globs=None, verbose=None, isprivate=None,
report=True, optionflags=0, extraglobs=None,
- raise_on_error=False):
+ raise_on_error=False, exclude_empty=False):
"""m=None, name=None, globs=None, verbose=None, isprivate=None,
- report=True, optionflags=0, extraglobs=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
name = m.__name__
# Find, parse, and run all tests in the given module.
- finder = DocTestFinder(_namefilter=isprivate)
+ finder = DocTestFinder(_namefilter=isprivate, exclude_empty=exclude_empty)
if raise_on_error:
runner = DebugRunner(verbose=verbose, optionflags=optionflags)
>>> def no_docstring(v):
... pass
- >>> finder.find(no_docstring) # doctest: +ELLIPSIS
- [<DocTest no_docstring from ... (no examples)>]
+ >>> finder.find(no_docstring)
+ []
However, the optional argument `exclude_empty` to the DocTestFinder
constructor can be used to exclude tests for objects with empty
1 SampleClass
3 SampleClass.NestedClass
1 SampleClass.NestedClass.__init__
- 0 SampleClass.NestedClass.get
- 0 SampleClass.NestedClass.square
1 SampleClass.__init__
2 SampleClass.a_classmethod
1 SampleClass.a_property
1 some_module.SampleClass
3 some_module.SampleClass.NestedClass
1 some_module.SampleClass.NestedClass.__init__
- 0 some_module.SampleClass.NestedClass.get
- 0 some_module.SampleClass.NestedClass.square
1 some_module.SampleClass.__init__
2 some_module.SampleClass.a_classmethod
1 some_module.SampleClass.a_property
>>> tests = doctest.DocTestFinder(_namefilter=namefilter).find(SampleClass)
>>> tests.sort()
>>> for t in tests:
+ ... print '%2s %s' % (len(t.examples), t.name)
+ 1 SampleClass
+ 3 SampleClass.NestedClass
+ 1 SampleClass.NestedClass.__init__
+ 1 SampleClass.__init__
+ 1 SampleClass.double
+ 1 SampleClass.get
+
+By default, that excluded objects with no doctests. exclude_empty=False
+tells it to include (empty) tests for objects with no doctests. This feature
+is really to support backward compatibility in what doctest.master.summarize()
+displays.
+
+ >>> tests = doctest.DocTestFinder(_namefilter=namefilter,
+ ... exclude_empty=False).find(SampleClass)
+ >>> tests.sort()
+ >>> for t in tests:
... print '%2s %s' % (len(t.examples), t.name)
1 SampleClass
3 SampleClass.NestedClass
... return base == 'SampleClass'
>>> tests = doctest.DocTestFinder(_namefilter=namefilter).find(SampleClass)
>>> len(tests)
- 11
+ 9
Turning off Recursion
~~~~~~~~~~~~~~~~~~~~~