diff options
author | Ethan Furman <ethan@stoneleaf.us> | 2015-09-18 05:21:36 (GMT) |
---|---|---|
committer | Ethan Furman <ethan@stoneleaf.us> | 2015-09-18 05:21:36 (GMT) |
commit | 7b51a55ecdd67df5ed9191048d6c1e500fc3f586 (patch) | |
tree | 1bf25786c6e43b88e1ab5617e5f93548be246025 /Doc/library/doctest.rst | |
parent | 8e3b04c70bbe540a8bda49d5fa7797e4f20b78e2 (diff) | |
parent | 2a5f9da56cbdecd487965e7e08988d5d2af28cae (diff) | |
download | cpython-7b51a55ecdd67df5ed9191048d6c1e500fc3f586.zip cpython-7b51a55ecdd67df5ed9191048d6c1e500fc3f586.tar.gz cpython-7b51a55ecdd67df5ed9191048d6c1e500fc3f586.tar.bz2 |
Issue24756: clarify usage of run_docstring_examples()
Diffstat (limited to 'Doc/library/doctest.rst')
-rw-r--r-- | Doc/library/doctest.rst | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/Doc/library/doctest.rst b/Doc/library/doctest.rst index 9aa9ea6..9f7d12c 100644 --- a/Doc/library/doctest.rst +++ b/Doc/library/doctest.rst @@ -914,15 +914,10 @@ and :ref:`doctest-simple-testfile`. 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) - Test examples associated with object *f*; for example, *f* may be a module, - function, or class object. + Test examples associated with object *f*; for example, *f* may be a string, + a module, a function, or a class object. A shallow copy of dictionary argument *globs* is used for the execution context. @@ -1815,6 +1810,27 @@ several options for organizing tests: * Define a ``__test__`` dictionary mapping from regression test topics to 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 .. [#] Examples containing both expected output and an exception are not supported. |