1. 程式人生 > >unittest數據參數化

unittest數據參數化

ase 進行 sse () 以及 引用 rep from nbsp

unittest本身不支持參數化,但是可以借助其他方法

1、unittest中使用第3方插件parameterized進行參數化

首先在DOS中鍵入以下命令安裝parameterized
python -m pip install parameterized

導包:
from parameterized import parameterized

例:

 1 import unittest
 2 from pylibrary.PyLib import *
 3 
 4 class   Interface_Report2(unittest.TestCase):
 5 
 6 #開始使用parameterized
7 @parameterized.expand([ #引用裝飾器,準備參數,傳入下方的函數 8 ("2018-09-26", 2018-09-26, "測試", "2001",49,TotalCallNum), 9 ("2018-09-26", 2018-09-26, "測試", "2001",60,TotalCallAnsweredNum), 10 ("2018-09-26", 2018-09-26, "測試", "2001",60,RingNum), 11 ("2018-09-13", 2018-09-13, "測試", "2001
",4,TotalCallNum_Transfer), 12 ]) 13 14 15 def test_Agreport1(self,start_time,end_time,template_name,ag_num,testData,reportData): #當執行到此會自動接收上面傳入的參數 16 self.num = testData 17 self.report_num1 = PyLib().getAgReport(start_time,end_time,template_name,ag_num) 18 self.report_num=self.report_num1[0][reportData]
19 self.assertEqual(self.num,self.report_num) 20 21 if __name__ == __main__: 22 23 unittest.main(verbosity=2) 24 25 #verbosity表示測試結果的信息復雜度,分別使用0,1,2,其具體的含義如下: 26 #0(靜默模式):僅僅獲取總的測試用例數以及總的結果 27 #1(默認模式):此時在每個成功的用例前面有個’.’,每個失敗的用例前面有個’F’ 28 #2(詳細模式):測試結果會顯示每個測試用例的所有相關信息

2、unittest的ddt庫

pip install ddt

首先創建一個數據文件:test_ddt_file.json

 1 {
 2     "test_Agreport1_01":{
 3         "start_time":"2018-09-26",
 4         "end_time":"2018-09-26",
 5         "template_name": "測試",
 6         "ag_num":"2001",
 7         "testData":49,
 8         "reportData":"TotalCallNum"
 9     },
10     "test_Agreport1_02":{
11         "start_time":"2018-09-26",
12         "end_time":"2018-09-26",
13         "template_name": "測試",
14         "ag_num":"2001",
15         "testData":60,
16         "reportData":"TotalCallAnsweredNum"
17     },
18     "test_Agreport1_03":{
19         "start_time":"2018-09-26",
20         "end_time":"2018-09-26",
21         "template_name": "測試",
22         "ag_num":"2001",
23         "testData":60,
24         "reportData":"RingNum"
25     },
26     "test_Agreport1_04":{
27         "start_time":"2018-09-13",
28         "end_time":"2018-09-13",
29         "template_name": "測試",
30         "ag_num":"2001",
31         "testData":4,
32         "reportData":"TotalCallNum_Transfer"
33     }
34 }

創建測試用例:

 1 import unittest
 2 from pylibrary.PyLib import *
 3 from ddt import ddt, file_data
 4 
 5 
 6 @ddt
 7 class   Interface_Report2(unittest.TestCase):
 8 
 9     @file_data("D:\\Python_code\\test_ddt_file.json")
10     def test_Agreport1(self,start_time,end_time,template_name,ag_num,testData,reportData):
11         self.num = testData
12         self.report_num1 = PyLib().getAgReport(start_time,end_time,template_name,ag_num)
13         self.report_num=self.report_num1[0][reportData]
14         self.assertEqual(self.num,self.report_num)
15 
16 
17 
18 if  __name__ == __main__:
19 
20     unittest.main(verbosity=2)

unittest數據參數化