2011-11-02 46 views
5

我想:我如何在Python创建一个测试套件单元测试

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 

,但我得到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' 

回答

5
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 
+0

错误: 回溯(最近一次通话最后): 文件“runtes ts.py“,第64行,在? 结果=主() 文件 “runtests.py”,第58行,在主 结果= unittest.TextTestRunner()。运行(buildTestSuite()) 文件 “runtests.py”,线路52,在buildTestSuite 模块= __import __(modname,fromlist ='1') TypeError:__import __()不带关键字参数 – kamal

+0

'__import__'在Python2.6 +(至少)中接受关键字参数。你使用的是什么版本的Python? – unutbu

+0

我使用Python 2.4.3 – kamal

0

试着这么做:

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)) 
+1

我得到的错误: 回溯(最近的通话最后): 文件“runtests.py”,第76行,在? results = main() 文件“runtests.py”,第70行,主要为 results = unittest.TextTestRunner()。run(buildTestSuite()) 文件“/usr/lib64/python2.4/unittest.py” ,行696,正在运行 测试(结果) TypeError:'NoneType'对象不可调用 – kamal

相关问题