一驹针、測試套件介紹
unittest中測試套件(TestSuite類)主要用于將測試用例分組,主要用于:
- 在不改變用例名的情況下冰木,通過測試套件來控制用例執(zhí)行的順序踊沸;
- 通過測試套件來添加需執(zhí)行的case逼龟,未被添加的case則不會被執(zhí)行;
unittest中discover()方法主要用于批量加載用例:
- 在存在多個測試文件時腺律,通過測試套件來統(tǒng)一執(zhí)行用例匀钧;
二谬返、執(zhí)行測試套件與批量執(zhí)行測試用例
1. TestSuite類常用方法
- unittest.TestSuite():創(chuàng)建一個測試集合,返回值為unittest.suite.TestSuite類(簡稱TestSuiteClass)吊圾;
- TestSuiteClass.addTest(test):向測試套件中一個一個地添加測試用例;
test的寫法為:testClassName("testCaseName")啰劲,testClassName表示待測試的類名檀何,testCaseName表示testCaseName下的測試用例名稱,測試用例名稱為字符串栓辜,故需用引號包裹垛孔; - TestSuiteClass.addTests(tests):向測試套件中一次添加多個測試用例周荐,tests一般為列表或元組;
2. discover批量加載用例
- unittest.defaultTestLoader.discover(start_dir, pattern='test.py',top_level_dir=None):批量加載測試用例概作,返回值為unittest.suite.TestSuite類(簡稱TestSuiteClass)讯榕;
start_dir:測試用例所在目錄或測試模塊名
pattern:測試用例文件名的匹配方式愚屁,默認(rèn)為test.py表示匹配以test開頭的任意py文件(*表示匹配任意字符);
top_level_dir:測試模塊的頂層目錄规辱;
3. 執(zhí)行測試套件或測試模塊
- unittest.TextTestRunner([verbosity, ...]):返回值為TextTestRunner類栽燕,常用的參數(shù)為verbosity碍岔;
verbosity:控制輸出的錯誤報告的詳細(xì)程序蔼啦。默認(rèn)為1,則不會輸出每一個用例的執(zhí)行結(jié)果捏肢,僅輸出總的執(zhí)行結(jié)果;若設(shè)為2衣屏,輸出結(jié)果更為詳細(xì)(會輸出每個用例的執(zhí)行結(jié)果)狼忱; - TextTestRunnerClass.run(test):執(zhí)行測試用例或測試套件
三钻弄、實例演示
- 通過addTest或addTests向測試套件中添加用例
import unittest
class SuiteSample1(unittest.TestCase):
"""測試套件中添加測試用例"""
@classmethod
def setUpClass(cls):
print("Start")
@classmethod
def tearDownClass(cls):
print("End")
def test_01(self):
print(1)
def test_02(self):
print(2)
def test_03(self):
print(3)
if __name__ == '__main__':
# 構(gòu)造測試套件
suite = unittest.TestSuite()
# # 向測試套件中添加測試用例:方法一
# suite.addTest(SuiteSample1("test_03"))
# suite.addTest(SuiteSample1("test_02"))
# 向測試套件中添加測試用例:方法二
tests = [SuiteSample1("test_03"), SuiteSample1("test_02")]
suite.addTests(tests)
# 執(zhí)行測試用例
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite)
- 所有的測試用例均保存目錄XXX下者吁,用例名稱均以test_開頭复凳,通過discover方法批量執(zhí)行測試用例
import unittest
if __name__ == "__main__":
# 測試用例保存的目錄
case_dirs = r"E:\PycharmProjects\pythonStudy\ModuleStudy\unittest_module\testCases"
# 加載測試用例
discover = unittest.defaultTestLoader.discover(case_dirs, "test_*.py")
# 運行測試用例
runner = unittest.TextTestRunner(verbosity=2)
runner.run(discover)
- 所有的測試用例均保存目錄XXX下,用例名稱均以test_開頭均芽,通過discover方法獲取測試套件掀宋,依次執(zhí)行測試用例
iimport unittest
def create_suite(testcase_dir):
"""創(chuàng)建測試套件"""
suite = unittest.TestSuite()
discover = unittest.defaultTestLoader.discover(testcase_dir, "test_*.py")
for test_suite in discover:
for test_case in test_suite:
suite.addTest(test_case)
return suite
def run(suite):
"""運行測試套件"""
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite)
if __name__ == "__main__":
case_dirs = r"E:\PycharmProjects\pythonStudy\ModuleStudy\unittest_module\testCases"
# 創(chuàng)建測試套件
suite = create_suite(case_dirs)
# 運行測試用例
run(suite)