diff options
author | Georg Brandl <georg@python.org> | 2008-05-12 17:38:56 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2008-05-12 17:38:56 (GMT) |
commit | 3183585a86d3888f44279abe249afd0cb09057ea (patch) | |
tree | c4741e3aa403fee7245edadee6573da20f20ffd8 | |
parent | bf086a1eb3949c338cc63d98f526dbf2d89eb344 (diff) | |
download | cpython-3183585a86d3888f44279abe249afd0cb09057ea.zip cpython-3183585a86d3888f44279abe249afd0cb09057ea.tar.gz cpython-3183585a86d3888f44279abe249afd0cb09057ea.tar.bz2 |
Remove deprecated Tester class from doctest module.
-rw-r--r-- | Doc/library/doctest.rst | 27 | ||||
-rw-r--r-- | Lib/doctest.py | 78 | ||||
-rw-r--r-- | Lib/test/test_doctest.py | 126 |
3 files changed, 16 insertions, 215 deletions
diff --git a/Doc/library/doctest.rst b/Doc/library/doctest.rst index aa662c0..133a506 100644 --- a/Doc/library/doctest.rst +++ b/Doc/library/doctest.rst @@ -163,10 +163,9 @@ prohibit it by passing ``verbose=False``. In either of those cases, ``sys.argv`` is not examined by :func:`testmod` (so passing :option:`-v` or not has no effect). -Since Python 2.6, there is also a command line shortcut for running -:func:`testmod`. You can instruct the Python interpreter to run the doctest -module directly from the standard library and pass the module name(s) on the -command line:: +There is also a command line shortcut for running :func:`testmod`. You can +instruct the Python interpreter to run the doctest module directly from the +standard library and pass the module name(s) on the command line:: python -m doctest -v example.py @@ -233,10 +232,9 @@ Like :func:`testmod`, :func:`testfile`'s verbosity can be set with the :option:`-v` command-line switch or with the optional keyword argument *verbose*. -Since Python 2.6, there is also a command line shortcut for running -:func:`testfile`. You can instruct the Python interpreter to run the doctest -module directly from the standard library and pass the file name(s) on the -command line:: +There is also a command line shortcut for running :func:`testfile`. You can +instruct the Python interpreter to run the doctest module directly from the +standard library and pass the file name(s) on the command line:: python -m doctest -v example.txt @@ -888,15 +886,10 @@ Unittest API ------------ As your collection of doctest'ed modules grows, you'll want a way to run all -their doctests systematically. Prior to Python 2.4, :mod:`doctest` had a barely -documented :class:`Tester` class that supplied a rudimentary way to combine -doctests from multiple modules. :class:`Tester` was feeble, and in practice most -serious Python testing frameworks build on the :mod:`unittest` module, which -supplies many flexible ways to combine tests from multiple sources. So, in -Python 2.4, :mod:`doctest`'s :class:`Tester` class is deprecated, and -:mod:`doctest` provides two functions that can be used to create :mod:`unittest` -test suites from modules and text files containing doctests. These test suites -can then be run using :mod:`unittest` test runners:: +their doctests systematically. :mod:`doctest` provides two functions that can +be used to create :mod:`unittest` test suites from modules and text files +containing doctests. These test suites can then be run using :mod:`unittest` +test runners:: import unittest import doctest diff --git a/Lib/doctest.py b/Lib/doctest.py index b5fa574..49e2fe6 100644 --- a/Lib/doctest.py +++ b/Lib/doctest.py @@ -166,10 +166,9 @@ ELLIPSIS_MARKER = '...' # 4. DocTest Finder -- extracts test cases from objects # 5. DocTest Runner -- runs test cases # 6. Test Functions -- convenient wrappers for testing -# 7. Tester Class -- for backwards compatibility -# 8. Unittest Support -# 9. Debugging Support -# 10. Example Usage +# 7. Unittest Support +# 8. Debugging Support +# 9. Example Usage ###################################################################### ## 1. Utility Functions @@ -1968,72 +1967,7 @@ def run_docstring_examples(f, globs, verbose=False, name="NoName", runner.run(test, compileflags=compileflags) ###################################################################### -## 7. Tester -###################################################################### -# This is provided only for backwards compatibility. It's not -# actually used in any way. - -class Tester: - def __init__(self, mod=None, globs=None, verbose=None, optionflags=0): - - warnings.warn("class Tester is deprecated; " - "use class doctest.DocTestRunner instead", - DeprecationWarning, stacklevel=2) - if mod is None and globs is None: - raise TypeError("Tester.__init__: must specify mod or globs") - if mod is not None and not inspect.ismodule(mod): - raise TypeError("Tester.__init__: mod must be a module; %r" % - (mod,)) - if globs is None: - globs = mod.__dict__ - self.globs = globs - - self.verbose = verbose - self.optionflags = optionflags - self.testfinder = DocTestFinder() - self.testrunner = DocTestRunner(verbose=verbose, - optionflags=optionflags) - - def runstring(self, s, name): - test = DocTestParser().get_doctest(s, self.globs, name, None, None) - if self.verbose: - print("Running string", name) - (f,t) = self.testrunner.run(test) - if self.verbose: - print(f, "of", t, "examples failed in string", name) - return TestResults(f,t) - - def rundoc(self, object, name=None, module=None): - f = t = 0 - tests = self.testfinder.find(object, name, module=module, - globs=self.globs) - for test in tests: - (f2, t2) = self.testrunner.run(test) - (f,t) = (f+f2, t+t2) - return TestResults(f,t) - - def rundict(self, d, name, module=None): - import types - m = types.ModuleType(name) - m.__dict__.update(d) - if module is None: - module = False - return self.rundoc(m, name, module) - - def run__test__(self, d, name): - import types - m = types.ModuleType(name) - m.__test__ = d - return self.rundoc(m, name) - - def summarize(self, verbose=None): - return self.testrunner.summarize(verbose) - - def merge(self, other): - self.testrunner.merge(other.testrunner) - -###################################################################### -## 8. Unittest Support +## 7. Unittest Support ###################################################################### _unittest_reportflags = 0 @@ -2393,7 +2327,7 @@ def DocFileSuite(*paths, **kw): return suite ###################################################################### -## 9. Debugging Support +## 8. Debugging Support ###################################################################### def script_from_examples(s): @@ -2546,7 +2480,7 @@ def debug(module, name, pm=False): debug_script(testsrc, pm, module.__dict__) ###################################################################### -## 10. Example Usage +## 9. Example Usage ###################################################################### class _TestClass: """ diff --git a/Lib/test/test_doctest.py b/Lib/test/test_doctest.py index 07e2542..af70162 100644 --- a/Lib/test/test_doctest.py +++ b/Lib/test/test_doctest.py @@ -2285,132 +2285,6 @@ using the optional keyword argument `encoding`: >>> doctest.master = None # Reset master. """ -# old_test1, ... used to live in doctest.py, but cluttered it. Note -# that these use the deprecated doctest.Tester, so should go away (or -# be rewritten) someday. - -# Ignore all warnings about the use of class Tester in this module. -# Note that the name of this module may differ depending on how it's -# imported, so the use of __name__ is important. -warnings.filterwarnings("ignore", "class Tester", DeprecationWarning, - __name__, 0) - -def old_test1(): r""" ->>> from doctest import Tester ->>> t = Tester(globs={'x': 42}, verbose=0) ->>> t.runstring(r''' -... >>> x = x * 2 -... >>> print(x) -... 42 -... ''', 'XYZ') -********************************************************************** -Line 3, in XYZ -Failed example: - print(x) -Expected: - 42 -Got: - 84 -TestResults(failed=1, attempted=2) ->>> t.runstring(">>> x = x * 2\n>>> print(x)\n84\n", 'example2') -TestResults(failed=0, attempted=2) ->>> t.summarize() -********************************************************************** -1 items had failures: - 1 of 2 in XYZ -***Test Failed*** 1 failures. -TestResults(failed=1, attempted=4) ->>> t.summarize(verbose=1) -1 items passed all tests: - 2 tests in example2 -********************************************************************** -1 items had failures: - 1 of 2 in XYZ -4 tests in 2 items. -3 passed and 1 failed. -***Test Failed*** 1 failures. -TestResults(failed=1, attempted=4) -""" - -def old_test2(): r""" - >>> from doctest import Tester - >>> t = Tester(globs={}, verbose=1) - >>> test = r''' - ... # just an example - ... >>> x = 1 + 2 - ... >>> x - ... 3 - ... ''' - >>> t.runstring(test, "Example") - Running string Example - Trying: - x = 1 + 2 - Expecting nothing - ok - Trying: - x - Expecting: - 3 - ok - 0 of 2 examples failed in string Example - TestResults(failed=0, attempted=2) -""" - -def old_test3(): r""" - >>> from doctest import Tester - >>> t = Tester(globs={}, verbose=0) - >>> def _f(): - ... '''Trivial docstring example. - ... >>> assert 2 == 2 - ... ''' - ... return 32 - ... - >>> t.rundoc(_f) # expect 0 failures in 1 example - TestResults(failed=0, attempted=1) -""" - -def old_test4(): """ - >>> import types - >>> m1 = types.ModuleType('_m1') - >>> m2 = types.ModuleType('_m2') - >>> test_data = \""" - ... def _f(): - ... '''>>> assert 1 == 1 - ... ''' - ... def g(): - ... '''>>> assert 2 != 1 - ... ''' - ... class H: - ... '''>>> assert 2 > 1 - ... ''' - ... def bar(self): - ... '''>>> assert 1 < 2 - ... ''' - ... \""" - >>> exec(test_data, m1.__dict__) - >>> exec(test_data, m2.__dict__) - >>> m1.__dict__.update({"f2": m2._f, "g2": m2.g, "h2": m2.H}) - - Tests that objects outside m1 are excluded: - - >>> from doctest import Tester - >>> t = Tester(globs={}, verbose=0) - >>> t.rundict(m1.__dict__, "rundict_test", m1) # f2 and g2 and h2 skipped - TestResults(failed=0, attempted=4) - - Once more, not excluding stuff outside m1: - - >>> t = Tester(globs={}, verbose=0) - >>> t.rundict(m1.__dict__, "rundict_test_pvt") # None are skipped. - TestResults(failed=0, attempted=8) - - The exclusion of objects from outside the designated module is - meant to be invoked automagically by testmod. - - >>> doctest.testmod(m1, verbose=False) - TestResults(failed=0, attempted=4) -""" - ###################################################################### ## Main ###################################################################### |