1. 程式人生 > >【Python】unittest-1

【Python】unittest-1

span 一個點 and python path ear ssm color self.

一、Unittest 單元測試 將測試結果和期望值作對比

(1) 繼承

(2) 引用包

(3) 執行一次test就會調用一次setup和tearDown

(4) 類名以test開頭

(5) 斷言異常

(6) 有一個點表示通過一個測試用例

二、如果有一個單元測試執行失敗,拋異常或斷言失敗,依然會被執行。斷言失敗會顯示E

凡是以test開頭的方法都是測試方法,反之不是,測試時候不會執行。其中,unittest.TestCase提供很多內置的條件判斷,我們可以調用這些方法斷言輸出是否是我們所預計的。
一般分為兩種,一種是assertEqual():斷言某兩個結果是否一致。一種是assertRaises():斷言是否是期待拋出的指定錯誤類型。

另外,可以通過在單元測試中增加兩個特殊函數setUp()和tearDown()函數,已實現在每調用一個測試方法的前後分別執行指定的動作,其中setUp是在測試函數調用前執行,tearDown是在之後執行,每次執行用例時都會: setUp->test_case->tearDown ;也就是說可以使用setUp和tearDown做每個用例的環境初始化

dome1:

每次執行用例時都會: setUp->test_case->tearDown ;也就是說可以使用setUp和tearDown做每個用例的環境初始化

 1 import unittest  
 2   
 3   
 4
class MyTestCase(unittest.TestCase): 5 # 預置環境 6 def setUp(self): 7 print 開始執行 8 9 # 清理環境 10 def tearDown(self): 11 print 結束執行 12 13 # 測試用例 14 def test_case1(self): 15 print 用例1 16 17 # 測試用例 18 def test_case2(self):
19 print 用例2 20 21 if __name__ == __main__: 22 unittest.main()

dome2:

每個class用一次,setUpClass->test_case1->test_case2->tearDownClass;也就是說使用setUpClass、tearDownClass可以做所有用例的前置初始化和結束

 1 import unittest  
 2   
 3   
 4 class MyTestCase(unittest.TestCase):  
 5     @classmethod  
 6     def setUpClass(cls):  
 7         print 開始執行  
 8  
 9     @classmethod  
10     def tearDownClass(cls):  
11         print 結束執行  
12   
13     # 測試用例  
14     def test_case1(self):  
15         print 用例1  
16   
17     # 測試用例  
18     def test_case2(self):  
19         print 用例2  
20   
21 if __name__ == __main__:  
22     unittest.main()  

三、unittest練習

#寫一個讀文件的類,裏面有個方法可以讀取文件的全部內容。
#寫個單元測試,斷言文件中包含關鍵字"glory road"

main.py

 1 import unittest
 2 import random
 3 from handle_file import HandleFile
 4 
 5 class TestSequenceFunctions(unittest.TestCase):
 6     def test_run(self):
 7         content = HandleFile.read_file("e:\\test4\\ip.txt")
 8         self.assertTrue("glory road" in content)
 9         
10 if __name__ == "__main__":
11     unittest.main()

handle_file.py

 1 import os
 2 
 3 class HandleFile():
 4     @staticmethod
 5     def read_file(file_path):
 6         if os.path.exists(file_path):
 7             with open(file_path) as f:
 8                 return f.read()
 9         else:
10             return "no file"
11 
12 
13 
14 if __name__=="__main__":
15     hf=HandleFile()
16     print hf.read_file("e:\\test4\\ip.txt")

 2 

【Python】unittest-1