Issue 7799: unittest returning standard_tests from load_tests in module fails (original) (raw)
Working from the example in the docs, I wrote a test suite like this:
def load_tests(loader, standard_tests, pattern): for case in email.test.emailtestdb.populated_test_cases(globals()): standard_tests.addTests(loader.loadFromTestCase(case)) return standard_test
This resulted in the exception:
Traceback (most recent call last): File "/home/rdmurray/python/bzr/email6-local/Lib/test/regrtest.py", line 857, in runtest_inner indirect_test() File "/home/rdmurray/python/bzr/email6-local/Lib/test/test_email.py", line 10, in test_main tests = unittest.defaultTestLoader.discover(testdir, top_level_dir=libdir) File "/home/rdmurray/python/bzr/email6-local/Lib/unittest/loader.py", line 179, in discover return self.suiteClass(tests) File "/home/rdmurray/python/bzr/email6-local/Lib/unittest/suite.py", line 18, in init self.addTests(tests) File "/home/rdmurray/python/bzr/email6-local/Lib/unittest/suite.py", line 54, in addTests self.addTest(test) File "/home/rdmurray/python/bzr/email6-local/Lib/unittest/suite.py", line 43, in addTest raise TypeError("{} is not callable".format(test)) TypeError: [<unittest.suite.TestSuite tests=[]>, <unittest.suite.TestSuite tests=[]>, <unittest.suite.TestSuite tests=[]>] is not callable
(Well, that's after I enhanced the normal error message, which just says that 'test must be a callable')
I see that loadTestsFromModule wraps what is passes as standard_tests in self.suiteClass before returning it, whereas it returns whatever load_tests returns directly. Perhaps the wrapping needs to be done in both cases, or perhaps standard_tests should be wrapped before being passed to the module's load_tests?
My load_tests is a function in a test module, not a package init.