2011-11-02 71 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

相關問題