Reputation: 9785
i tried:
def buildTestSuite():
suite = unittest.TestSuite()
for testcase in glob.glob('src/testsuite/test_*.py'):
module = os.path.splitext(testcase)[0]
print module
print type(module)
suite.addTest(__import__(module).buildTestSuite())
return suite
but i get eror:
Traceback (most recent call last):
File "runtests.py", line 63, in ?
results = main()
File "runtests.py", line 57, in main
results = unittest.TextTestRunner().run(buildTestSuite())
File "runtests.py", line 53, in buildTestSuite
suite.addTest(__import__(module).buildTestSuite())
AttributeError: 'module' object has no attribute 'buildTestSuite'
Upvotes: 5
Views: 4065
Reputation: 880977
def buildTestSuite():
suite = unittest.TestSuite()
for testcase in glob.glob('src/testsuite/test_*.py'):
modname = os.path.splitext(testcase)[0]
module=__import__(modname,{},{},['1'])
suite.addTest(unittest.TestLoader().loadTestsFromModule(module))
return suite
Upvotes: 5
Reputation: 5789
Try something like:
suite = unittest.TestSuite()
for t in glob.glob('src/testsuite/test_*.py'):
try:
# If the module defines a suite() function, call it to get the suite.
mod = __import__(t, globals(), locals(), ['suite'])
suitefn = getattr(mod, 'suite')
suite.addTest(suitefn())
except (ImportError, AttributeError):
# else, just load all the test cases from the module.
suite.addTest(unittest.defaultTestLoader.loadTestsFromName(t))
Upvotes: 0