一、ddt简介
1.ddt是 data driven testing的缩写,中文含义是数据驱动测试。
2.ddt通常与unittest组合使用,常用的包有ddt,data,unpack,file_data(我这边使用前两种)
二、ddt安装
1.在pycharm控制台使用pip install ddt
2.进入pycharm的settings----project:--------Interpreter模块,找到pip,进入pip模块,搜索ddt,完成安装
三、ddt的使用
1.导包:from ddt import ddt,data
2.@ddt放在测试类的顶部(见附件)
3.@data放在测试方法的顶部,后面紧跟测试数据===》 @data(* testdata) 这里的 “ * ” 是拆包的意思,把测试数据拆成单独的一条。可以是单独的数字、字符串、也可以是列表、元组、字典
# -- coding: utf-8 --
# @Time : 2022/4/9 15:51
# @Author : tianqiang
# @File : testcase.py
# @Software: PyCharm
# @description:
import unittest
from TestCase.Myddt import ddt, data
from Common.Send_Request import HandlerRequest
from Common.OperateExcel import read_case
from Common.Conversion_Type import conversion_Type
from Common.RunLog import my_log
@ddt
class RunCase(unittest.TestCase):
case_lists = read_case.read_excel()
@classmethod
def setUpClass(cls):
cls.hr = HandlerRequest()
@classmethod
def tearDownClass(cls):
pass
@data(*case_lists)
def test_case(self, case):
new_data = conversion_Type.cast_type(case['data'])
d = conversion_Type.cast_type(new_data)
print(new_data)
result_data = self.hr.send_request(method=case['method'], request_path=case['path'], case_data=d)
actual_result = result_data.json()
expected_result = eval(case['ExpectRequest'])
try:
self.assertEqual(expected_result["code"], actual_result["code"])
except AssertionError:
my_log.exception("断言失败!")
my_log.info(f"获取执行的用例名{case['casename']},请求方法{case['method']},\n请求数据{new_data},\n响应结果{actual_result}")
raise # raise是为了将断言失败的用例 ,返回给框架。框架不能直接识别用例是否失败
except:
my_log.exception("断言失败以外的异常!")
my_log.info(f"获取执行的用例名{case['casename']},请求方法{case['method']},\n请求数据{new_data},\n响应结果{actual_result}")
raise
---------------------------------------------------学海无涯