unittest.TestLoader()提供了創(chuàng)建test suite的幾種方法:
TestLoader().loadTestsFromTestCase(testCaseClass)
TestLoader().loadTestsFromModule(module, pattern=None)
TestLoader().loadTestsFromName(name, module=None)
TestLoader().loadTestsFromNames(name, module=None)
TestLoader().discover
下面一一列舉其用法,并會感嘆unittest的精妙之處古沥。
- loadTestsFromTestCase(testCaseClass)
testCaseClass必須是TestCase的子類(或?qū)O類也行) - loadTestsFromModule(module, pattern=None)
test case所在的module - loadTestsFromName(name, module=None)
name是一個string诫舅,string需要是是這種格式的“module.class.method” - loadTestsFromNames(name, module=None)
names是一個list攒巍,用法與上同 - discover(start_dir, pattern=’test*.py’, top_level_dir=None)
從python文件中獲取test cases
以上舉例如下:
含有test cases的文件:for_all.py
class DefaultTestCase(unittest.TestCase):
def setUp(self):
print "Start to run"
def tearDown(self):
print "Close"
class CasesALL(DefaultTestCase):
def ab_test_print_b(self):
print 'b',
print time.time()
time.sleep(2)
用來執(zhí)行測試用例的文件:run.py
import unittest
from unittest import TestLoader
import for_all
from for_all import CasesALL
if __name__ == '__main__':
suite = unittest.TestSuite()
loader = TestLoader()
loader.testMethodPrefix = 'ab'
# loader.sortTestMethodsUsing = None
# test_cases_name = loader.getTestCaseNames(CasesALL)
test_cases1 = unittest.TestLoader().loadTestsFromTestCase(CasesALL)
test_cases2 = unittest.TestLoader().loadTestsFromModule(for_all)
test_cases3 = unittest.TestLoader().loadTestsFromName('for_all.CasesALL.ab_test_print_b')
suite.addTests(test_cases1)
suite.addTests(test_cases2)
suite.addTests(test_cases3)
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite)
調(diào)試時發(fā)現(xiàn)建峭,其實三種方法得到的test suite的格式都不一樣,但是runner.run()執(zhí)行的結(jié)果是一樣的调塌,這也是我覺得驚喜的原因跃闹。
unittest.TextTestRunner(verbosity=2).run(tests)
這里的verbosity是一個選項,表示測試結(jié)果的信息復(fù)雜度,有三個值
0 (靜默模式): 你只能獲得總的測試用例數(shù)和總的結(jié)果 比如 總共100個 失敗20 成功80
1 (默認模式): 非常類似靜默模式 只是在每個成功的用例前面有個“.” 每個失敗的用例前面有個 “F”
2 (詳細模式):測試結(jié)果會顯示每個測試用例的所有相關(guān)的信息
并且 你在命令行里加入不同的參數(shù)可以起到一樣的效果
加入 --quiet 參數(shù) 等效于 verbosity=0
加入--verbose參數(shù)等效于 verbosity=2
什么都不加就是 verbosity=1</pre>