一、unittest 框架講解
unittest是Python單元測試框架
二、需要掌握unittest四個概念
Testcase(測試用例):一個測試用例是一個獨立的單元測試,它檢查對特定輸入集的特定響應。unittest提供了一個基類(TestCase),能夠用他去創建新的測試用例。包括測試前准備環境的搭建(setUp),執行測試代碼 (run),以及測試后環境的還原(tearDown)。元測試(unit test)的本質也就在這里,一個測試用例是一個完整的測試單元,通過運行這個測試單元,可以對某一個問題進行驗證。
Test suite(測試套件):將單一的測試用例或者是一整個測試套件,集合到一起
Test runner(測試運行器): 執行測試用例,run會執行testsuite/testcase中run的方法
TestLoader(測試加載器):加載testcase到testloader,從文件各個地方尋找testcase,創建testcase的實例,然后add到testsuite中,再返回一個testsuite實例
Test fixture(測試夾具):夾在case入口與出口而已,即執行目標之前執行setup,執行目標之后執行teardown
三、unittest測試原理
1、定義一個要被測試的類,該測試類需要Test開頭且必須繼承unittest.TestCase才能成為一個測試類,才可以被unittest執行
2、定義類中的測試方法時,方法必須要test_開頭,只有這樣才會告訴執行器哪些方法是可執行的,也只有test_開頭的才會被執行
3、執行 unittest.main() ,該函數會負責運行測試,它會實例化所有TestCase的子類,並運行其中所有以test打頭的方法。
四、Testcase示例

1 import unittest 2 from login import login_check 3 #定義一個要被測試的類,該測試類需要Test開頭且必須繼承unittest.TestCase才能成為一個測試類,才可以被unittest執行 4 class LoginTestCase(unittest.TestCase): 5 #測試夾具 6 def setUp(self): 7 print('測試開始了') 8 def tearDown(self): 9 print('測試結束了') 10 #定義類中的測試方法時,方法必須要test_開頭,只有這樣才會告訴執行器哪些方法是可執行的,也只有test_開頭的才會被執行 11 def test_login(self): 12 #預期結果 13 excepted = {'code': '0000', 'massage': '賬戶密碼正確,登陸成功'} 14 #傳入參數 15 data = ('python18','123456') 16 #調用被測函數,傳入參數(需要解包),獲取實際結果 17 res= login_check(*data) 18 try: 19 self.assertEqual(excepted, res) # 通過實例對象(self)來調用assertEqual()方法 20 except AssertionError as e: 21 print("該測試用例測試未通過") # 可通過異常捕獲來獲取 22 raise e # 此處需要使用raise主動拋出異常 23 else: 24 pass 25 print("該測試用例測試通過") 26 if __name__ == '__main__': 27 unittest.main()
五、Test suite示例