unittest数据参数化
Posted mollylin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unittest数据参数化相关的知识,希望对你有一定的参考价值。
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数据参数化的主要内容,如果未能解决你的问题,请参考以下文章
pytest学习和使用12-Unittest和Pytest参数化详解
pytest学习和使用12-Unittest和Pytest参数化详解
selenium+python自动化97--unittest参数化(paramunittest)