阿里巴巴国内网站怎么做湖南建筑信息网
2026/5/13 20:39:25 网站建设 项目流程
阿里巴巴国内网站怎么做,湖南建筑信息网,梦幻西游网页微信版,做论坛网站多少钱简单介绍 DDT#xff08;Date Driver Test#xff09;#xff0c;所谓数据驱动测试#xff0c;简单来说就是由数据的改变从而驱动自动化测试的执行#xff0c;最终引起测试结果的改变。通过使用数据驱动测试的方法#xff0c;可以在需要验证多组数据测试场景中#xff…简单介绍DDTDate Driver Test所谓数据驱动测试简单来说就是由数据的改变从而驱动自动化测试的执行最终引起测试结果的改变。通过使用数据驱动测试的方法可以在需要验证多组数据测试场景中使用外部数据源实现对输入输出与期望值的参数化避免在测试中使用硬编码的数据也就是测试数据和用例脚本代码分离。​ DDT它其实就是一个装饰器它会根据你传递进来的数据来决定要生成几个测试用例。使用的意义1.代码复用率高一个测试逻辑只需要写一次可以多条测试数据复用同时提高测试脚本的编写效率。2.异常排查效率高根据测试数据每条数据生成一条测试用例用例相互分离一条失败的情况下不会影响其他测试用例。3.代码可维护性高简洁明了的测试框架利于其他同事阅读提高代码的可维护性。安装及导入​ cmd命令行执行安装pip install ddt​ 直接导入到模块import ddt或导入具体的装饰器from ddt import ddt, data, unpackddt使用详解​ 三个要点ddt装饰测试类data装饰测试用例unpack装饰测试用例要使用ddt的前提是要有测试用例类然后用ddt去装饰测试用例类用data(测试数据)去装饰测试用例如下登录接口例子from ddt import ddt, data from common.read_excel import ReadExcel from common.my_logger import log ddt # 装饰登录测试用例类声明使用ddt class LoginTestCase(unittest.TestCase): excel ReadExcel(cases.xlsx, login) cases excel.read_data() data(*cases) # 装饰测试用例 def test_login(self, case): case_data eval(case[data]) expected eval(case[expected]) case_id case[case_id] result login_check(*case_data) response self.http.send(urlurl, methodmethod, jsondata, headersheaders) result response.json() try: self.assertEqual(expected[code], result[code]) self.assertEqual((expected[msg]), result[msg]) except AssertionError as e: log.info(用例{}---执行未通过.format(case[title])) print(预期结果{}.format(expected)) print(实际结果{}.format(result)) raise e else: log.info(用例{}---执行通过.format(case[title])) if __name__ __main__: unittest.main()ddt它做的事情其实就等同于这句代码 LoginTestCase ddt(LoginTestCase) 把具体的类名传给ddt告诉ddt是这个测试用例类要使用数据驱动。data做的事情就是把测试数据作为一个参数传递给测试用例一个数据对应生成一条测试用例如果data里面有多个数据那么就对应生成多条测试用例。如果data里放的类似是元组、列表等这样的序列类型的数据data会把他们当成是一个整体即一个测试数据。​ 如果想一次传递多个参数给测试用例需要自行在脚本中对数据进行分解或者使用unpack分解数据。如上例子中的测试用例只使用了一个参数但这个参数case是一个字典字典中已经包含多个数据直接用key获取对应的值即可。unpack则是可以把序列类型的数据拆分为多个以多个参数传给测试用例但测试用例也需要定义同等数量的参数来接收。​ 上面例子的测试数据cases来源是使用了openpyxl来读取excel中的测试数据的关于openpyxl可以看我这个系列的另外一篇随笔。这里直接说明cases其实就是像下面这样的一个列表pythoncases [{case_id: 1, title: 正常登录, data: (test, Test1234), expected: {code: 0, msg: 登录成功}}, {case_id: 2, title: 密码错误, data: (test, 123), expected: {code: 1, msg: 账号或密码不正确}}, {case_id: 3, title: 账户名错误, data: (test11, Test1234), expected: {code: 1, msg: 账号或密码不正确}}] # *解包后一个字典就是一个测试用例数据 # 如第一个字典{case_id: 1, title: 正常登录, data: (test, Test1234), expected: {code: 0, msg: 登录成功}}​ 通过*解包它的数据就是3个字典每次给测试用例传入1个字典而这个字典里就存放了一条完整的登录接口测试用例的测试数据包括用例id、用例标题、测试的账号密码、期望返回的结果。小结data(a,b)a和b各运行一次用例data(*(a,b)a和b各运行一次用例使用*解包相当于data(a,b)data([a,d],[c,d])如果没有unpack[a,b]、[c,d]都会被当成一个参数传入用例即用[a,b]运行一次用[c,d]运行一次如果有unpack[a,b]会被分解开一次传递两个参数给用例用例需要定义两个参数接收unpack可适用元组、列表或字典但当传入的是字典时字典的key和用例定义的参数名需要保持一致扩展​关键代码file_data传递文件(json/yaml)# 传递json json文件数据 { token:123456, actionName: api.login, content: { user: miki, pwd: Test123 } } yaml文件 test_list: - 11 - 22 - 12 sorted_list: [ 11, 12, 22 ] from ddt import * ddt # 声明使用ddt class TestFile(unittest.TestCase): file_data(D:/test/test.json) def test_json(self, json_data): print(json_data) file_data(D:/test/test.yaml) def test_yaml(self, yaml_data): print(yaml, yaml_data)最后作为一位过来人也是希望大家少走一些弯路在这里我给大家分享一些软件测试的学习资料这些资料希望能给你前进的路上带来帮助。​视频文档获取方式这份文档和视频资料对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你以上均可以分享点下方小卡片即可自行领取。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询