unittest數據參數化
阿新 • • 發佈:2018-10-10
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 #開始使用parameterized7 @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數據參數化