Kaydet (Commit) 7b51a55e authored tarafından Ethan Furman's avatar Ethan Furman

Issue24756: clarify usage of run_docstring_examples()

...@@ -914,15 +914,10 @@ and :ref:`doctest-simple-testfile`. ...@@ -914,15 +914,10 @@ and :ref:`doctest-simple-testfile`.
above, except that *globs* defaults to ``m.__dict__``. above, except that *globs* defaults to ``m.__dict__``.
There's also a function to run the doctests associated with a single object.
This function is provided for backward compatibility. There are no plans to
deprecate it, but it's rarely useful:
.. function:: run_docstring_examples(f, globs, verbose=False, name="NoName", compileflags=None, optionflags=0) .. function:: run_docstring_examples(f, globs, verbose=False, name="NoName", compileflags=None, optionflags=0)
Test examples associated with object *f*; for example, *f* may be a module, Test examples associated with object *f*; for example, *f* may be a string,
function, or class object. a module, a function, or a class object.
A shallow copy of dictionary argument *globs* is used for the execution context. A shallow copy of dictionary argument *globs* is used for the execution context.
...@@ -1815,6 +1810,27 @@ several options for organizing tests: ...@@ -1815,6 +1810,27 @@ several options for organizing tests:
* Define a ``__test__`` dictionary mapping from regression test topics to * Define a ``__test__`` dictionary mapping from regression test topics to
docstrings containing test cases. docstrings containing test cases.
When you have placed your tests in a module, the module can itself be the test
runner. When a test fails, you can arrange for your test runner to re-run only
the failing doctest while you debug the problem. Here is a minimal example of
such a test runner::
if __name__ == '__main__':
import doctest
flags = doctest.REPORT_NDIFF|doctest.FAIL_FAST
if len(sys.argv) > 1:
name = sys.argv[1]
if name in globals():
obj = globals()[name]
else:
obj = __test__[name]
doctest.run_docstring_examples(obj, globals(), name=name,
optionflags=flags)
else:
fail, total = doctest.testmod(optionflags=flags)
print("{} failures out of {} tests".format(fail, total))
.. rubric:: Footnotes .. rubric:: Footnotes
.. [#] Examples containing both expected output and an exception are not supported. .. [#] Examples containing both expected output and an exception are not supported.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment