From 1e277ee3bd76b82d74214ab2a415a3516c168cfa Mon Sep 17 00:00:00 2001 From: Tim Peters Date: Sat, 7 Aug 2004 05:37:52 +0000 Subject: Bug 772091: doctest.DocTestSuite does not support __test__ This got fixed "by magic" as part of the refactoring, but wasn't tested as such. Now it is. --- Lib/test/sample_doctest.py | 16 +++++++++++++--- Lib/test/test_doctest.py | 29 ++++++++++++++++------------- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/Lib/test/sample_doctest.py b/Lib/test/sample_doctest.py index 25a1d37..e5adee0 100644 --- a/Lib/test/sample_doctest.py +++ b/Lib/test/sample_doctest.py @@ -1,9 +1,9 @@ """This is a sample module that doesn't really test anything all that - interesting + interesting. -It simply has a few tests, some of which suceed and some of which fail. +It simply has a few tests, some of which succeed and some of which fail. -It's important that the numbers remain constance, as another test is +It's important that the numbers remain constant as another test is testing the running of these tests. @@ -61,6 +61,16 @@ def y_is_one(): 1 """ +__test__ = {'good': """ + >>> 42 + 42 + """, + 'bad': """ + >>> 42 + 666 + """, + } + def test_suite(): import doctest return doctest.DocTestSuite() diff --git a/Lib/test/test_doctest.py b/Lib/test/test_doctest.py index 5cd79d5..717771d 100644 --- a/Lib/test/test_doctest.py +++ b/Lib/test/test_doctest.py @@ -986,7 +986,7 @@ Run the debugger on the docstring, and then restore sys.stdin. """ def test_DocTestSuite(): - """DocTestSuite creates a unittest test suite into a doctest. + """DocTestSuite creates a unittest test suite from a doctest. We create a Suite by providing a module. A module can be provided by passing a module object: @@ -995,19 +995,19 @@ def test_DocTestSuite(): >>> import test.sample_doctest >>> suite = doctest.DocTestSuite(test.sample_doctest) >>> suite.run(unittest.TestResult()) - + We can also supply the module by name: >>> suite = doctest.DocTestSuite('test.sample_doctest') >>> suite.run(unittest.TestResult()) - + We can use the current module: >>> suite = test.sample_doctest.test_suite() >>> suite.run(unittest.TestResult()) - + We can supply global variables. If we pass globs, they will be used instead of the module globals. Here we'll pass an empty @@ -1015,7 +1015,7 @@ def test_DocTestSuite(): >>> suite = doctest.DocTestSuite('test.sample_doctest', globs={}) >>> suite.run(unittest.TestResult()) - + Alternatively, we can provide extra globals. Here we'll make an error go away by providing an extra global variable: @@ -1023,17 +1023,17 @@ def test_DocTestSuite(): >>> suite = doctest.DocTestSuite('test.sample_doctest', ... extraglobs={'y': 1}) >>> suite.run(unittest.TestResult()) - + You can pass option flags. Here we'll cause an extra error by disabling the blank-line feature: >>> suite = doctest.DocTestSuite('test.sample_doctest', - ... optionflags=doctest.DONT_ACCEPT_BLANKLINE) + ... optionflags=doctest.DONT_ACCEPT_BLANKLINE) >>> suite.run(unittest.TestResult()) - + - You can supply setUp and teatDoen functions: + You can supply setUp and tearDown functions: >>> def setUp(): ... import test.test_doctest @@ -1048,7 +1048,7 @@ def test_DocTestSuite(): >>> suite = doctest.DocTestSuite('test.sample_doctest', ... setUp=setUp, tearDown=tearDown) >>> suite.run(unittest.TestResult()) - + But the tearDown restores sanity: @@ -1059,15 +1059,18 @@ def test_DocTestSuite(): AttributeError: 'module' object has no attribute 'sillySetup' Finally, you can provide an alternate test finder. Here we'll - use a custom test_finder to to run just the test named bar: + use a custom test_finder to to run just the test named bar. + However, the test in the module docstring, and the two tests + in the module __test__ dict, aren't filtered, so we actually + run three tests besides bar's. The filtering mechanisms are + poorly conceived, and will go away someday. >>> finder = doctest.DocTestFinder( ... namefilter=lambda prefix, base: base!='bar') >>> suite = doctest.DocTestSuite('test.sample_doctest', ... test_finder=finder) >>> suite.run(unittest.TestResult()) - - + """ def test_DocFileSuite(): -- cgit v0.12