[Checkins] SVN: zope.testing/trunk/ when a test module does not define a test_suite, first try to load any unittest.TestCase descendants in it before complaining it does not contain any tests
Wolfgang Schnerring
wosc at wosc.de
Fri Jul 24 02:38:48 EDT 2009
Log message for revision 102202:
when a test module does not define a test_suite, first try to load any unittest.TestCase descendants in it before complaining it does not contain any tests
Changed:
U zope.testing/trunk/CHANGES.txt
U zope.testing/trunk/src/zope/testing/testrunner/find.py
A zope.testing/trunk/src/zope/testing/testrunner/testrunner-discovery.txt
U zope.testing/trunk/src/zope/testing/testrunner/testrunner-errors.txt
A zope.testing/trunk/src/zope/testing/testrunner/testrunner-ex/sample1/sampletests_discover.py
A zope.testing/trunk/src/zope/testing/testrunner/testrunner-ex/sample1/sampletests_discover_notests.py
-=-
Modified: zope.testing/trunk/CHANGES.txt
===================================================================
--- zope.testing/trunk/CHANGES.txt 2009-07-24 06:35:34 UTC (rev 102201)
+++ zope.testing/trunk/CHANGES.txt 2009-07-24 06:38:47 UTC (rev 102202)
@@ -4,7 +4,8 @@
3.7.8 (unreleased)
==================
-- ...
+- Testrunner automatically picks up descendants of unittest.TestCase in test
+ modules, so you don't have to provide a test_suite() anymore.
3.7.7 (2009-07-15)
==================
Modified: zope.testing/trunk/src/zope/testing/testrunner/find.py
===================================================================
--- zope.testing/trunk/src/zope/testing/testrunner/find.py 2009-07-24 06:35:34 UTC (rev 102201)
+++ zope.testing/trunk/src/zope/testing/testrunner/find.py 2009-07-24 06:38:47 UTC (rev 102202)
@@ -153,7 +153,15 @@
)
else:
try:
- suite = getattr(module, options.suite_name)()
+ if hasattr(module, options.suite_name):
+ suite = getattr(module, options.suite_name)()
+ else:
+ suite = unittest.defaultTestLoader.loadTestsFromModule(module)
+ if suite.countTestCases() == 0:
+ raise TypeError(
+ "Module %s does not define any tests"
+ % module_name)
+
if isinstance(suite, unittest.TestSuite):
check_suite(suite, module_name)
else:
Added: zope.testing/trunk/src/zope/testing/testrunner/testrunner-discovery.txt
===================================================================
--- zope.testing/trunk/src/zope/testing/testrunner/testrunner-discovery.txt (rev 0)
+++ zope.testing/trunk/src/zope/testing/testrunner/testrunner-discovery.txt 2009-07-24 06:38:47 UTC (rev 102202)
@@ -0,0 +1,48 @@
+Automatically discovering tests
+===============================
+
+You can explicitly specify which tests to run by providing a unittest.TestSuite
+object (or a callable that returns one) in the test modules (the name of the
+object or function can be configured with the --suite-name parameter, it
+defaults to 'test_suite'). If no such object is present, testrunner will use
+all classes in the module that inherit from unittest.TestCase as tests:
+
+ >>> import os, sys
+ >>> directory_with_tests = os.path.join(this_directory, 'testrunner-ex')
+
+ >>> from zope.testing import testrunner
+
+ >>> defaults = [
+ ... '--path', directory_with_tests,
+ ... '--tests-pattern', '^sampletestsf?$',
+ ... ]
+ >>> sys.argv = ['test',
+ ... '--tests-pattern', '^sampletests_discover$',
+ ... ]
+ >>> testrunner.run(defaults)
+ Running zope.testing.testrunner.layer.UnitTests tests:
+ Set up zope.testing.testrunner.layer.UnitTests in N.NNN seconds.
+ Ran 1 tests with 0 failures and 0 errors in N.NNN seconds.
+ Tearing down left over layers:
+ Tear down zope.testing.testrunner.layer.UnitTests in N.NNN seconds.
+ False
+
+If the module neither provides a TestSuite nor has discoverable tests,
+testrunner will exit with an error to prevent acidentally missing test cases:
+
+ >>> sys.argv = ['test',
+ ... '--tests-pattern', '^sampletests_discover_notests$',
+ ... ]
+ >>> testrunner.run(defaults)
+ Test-module import failures:
+ <BLANKLINE>
+ Module: sample1.sampletests_discover_notests
+ <BLANKLINE>
+ TypeError: Module sample1.sampletests_discover_notests does not define any tests
+ <BLANKLINE>
+ <BLANKLINE>
+ <BLANKLINE>
+ Test-modules with import problems:
+ sample1.sampletests_discover_notests
+ Total: 0 tests, 0 failures, 0 errors in 0.000 seconds.
+ True
Modified: zope.testing/trunk/src/zope/testing/testrunner/testrunner-errors.txt
===================================================================
--- zope.testing/trunk/src/zope/testing/testrunner/testrunner-errors.txt 2009-07-24 06:35:34 UTC (rev 102201)
+++ zope.testing/trunk/src/zope/testing/testrunner/testrunner-errors.txt 2009-07-24 06:38:47 UTC (rev 102202)
@@ -728,12 +728,6 @@
ImportError: No module named huh
<BLANKLINE>
<BLANKLINE>
- Module: sample2.sample22.sampletests_i
- <BLANKLINE>
- Traceback (most recent call last):
- AttributeError: 'module' object has no attribute 'test_suite'
- <BLANKLINE>
- <BLANKLINE>
Module: sample2.sample23.sampletests_i
<BLANKLINE>
Traceback (most recent call last):
@@ -779,7 +773,6 @@
Test-modules with import problems:
sample2.sampletests_i
sample2.sample21.sampletests_i
- sample2.sample22.sampletests_i
sample2.sample23.sampletests_i
Total: 213 tests, 0 failures, 0 errors in N.NNN seconds.
True
Added: zope.testing/trunk/src/zope/testing/testrunner/testrunner-ex/sample1/sampletests_discover.py
===================================================================
--- zope.testing/trunk/src/zope/testing/testrunner/testrunner-ex/sample1/sampletests_discover.py (rev 0)
+++ zope.testing/trunk/src/zope/testing/testrunner/testrunner-ex/sample1/sampletests_discover.py 2009-07-24 06:38:47 UTC (rev 102202)
@@ -0,0 +1,5 @@
+import unittest
+
+class TestA(unittest.TestCase):
+ def test_truth(self):
+ self.assert_(True)
Added: zope.testing/trunk/src/zope/testing/testrunner/testrunner-ex/sample1/sampletests_discover_notests.py
===================================================================
--- zope.testing/trunk/src/zope/testing/testrunner/testrunner-ex/sample1/sampletests_discover_notests.py (rev 0)
+++ zope.testing/trunk/src/zope/testing/testrunner/testrunner-ex/sample1/sampletests_discover_notests.py 2009-07-24 06:38:47 UTC (rev 102202)
@@ -0,0 +1,2 @@
+def test_function_that_would_never_be_run():
+ self.assert_(True)
More information about the Checkins
mailing list