2009-10-16 126 views
2

我正試圖在我認爲是模塊的python中運行一些單元測試。我有一個像從模塊運行測試

TestSuite.py 
UnitTests 
    |__init__.py 
    |TestConvertStringToNumber.py 

在testsuite.py的目錄結構我有

import unittest 

import UnitTests 

class TestSuite: 
    def __init__(self): 
     pass 

print "Starting testting" 
suite = unittest.TestLoader().loadTestsFromModule(UnitTests) 
unittest.TextTestRunner(verbosity=1).run(suite) 

它看起來揭開序幕測試好的,但它不拿起任何TestConvertNumberToString.py測試。在那個類中,我有一組以'test'開頭的函數。

我應該怎麼做,以便運行python TestSuite.py實際上啓動了我在UnitTests中的所有測試?

回答

4

下面是一些代碼,將在目錄中運行所有的單元測試:

#!/usr/bin/env python 
import unittest 
import sys 
import os 

unit_dir = sys.argv[1] if len(sys.argv) > 1 else '.' 
os.chdir(unit_dir) 
suite = unittest.TestSuite() 
for filename in os.listdir('.'): 
    if filename.endswith('.py') and filename.startswith('test_'): 
     modname = filename[:-2] 
     module = __import__(modname) 
     suite.addTest(unittest.TestLoader().loadTestsFromModule(module)) 

unittest.TextTestRunner(verbosity=2).run(suite) 

如果你把它testsuite.py,那麼您可以運行這樣的:

testsuite.py UnitTests 
+0

美麗,謝謝。這是我錯過的__import__函數 – stimms

0

使用Twisted的「試用」測試運行器,你可以擺脫TestSuite.py,只需要:

$ trial UnitTests.TestConvertStringToNumber 

on the command line;或者更好的是,只需要

$ trial UnitTests 

發現並運行包中的所有測試。