python 数据驱动接口自动化框架_python接口自动化测试 - 数据驱动DDT模块的简单使用...

DDT简单介绍

名称:Data-Driven Tests,数据驱动测试

作用:由外部数据集合来驱动测试用例的执行

核心的思想:数据和测试代码分离

应用场景:一组外部数据来执行相同的操作

优点:当测试数据发生大量变化的情况下,测试代码可以保持不变

实际项目:excel存储测试数据,ddt读取测试数据到单元测试框架(测试用例中),输出到html报告

什么是数据驱动

就是数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。说的直白些,就是参数化的应用

DDT基础使用(一):传递基础数据类型

#导入ddt库下所有内容

from ddt import *

#在测试类前必须首先声明使用 ddt

@ddtclassimoocTest(unittest.TestCase):#int

@data(1, 2, 3, 4)deftest_int(self, i):print("test_int:", i)#str

@data("1", "2", "3")deftest_str(self, str):print("test_str:", str)

测试结果

test_int: 1test_int:2test_int:3test_int:4test_str:1test_str:2test_str:3

包含知识点

想使用DDT首先要在单元测试类上面加上 @ddt

DDT基础使用(二):传递一个复杂的数据结构

from ddt import *

#在测试类前必须首先声明使用 ddt

@ddtclassimoocTest(unittest.TestCase):

tuples= ((1, 2, 3), (1, 2, 3))

lists= [[1, 2, 3], [1, 2, 3]]#元组

@data((1, 2, 3), (1, 2, 3))deftest_tuple(self, n):print("test_tuple", n)#列表

@data([1, 2, 3], [1, 2, 3])

@unpackdeftest_list(self, n1, n2, n3):print("test_list", n1, n2, n3)#元组2

@data(*tuples)deftest_tuples(self, n):print("test_tuples", n)#列表2

@data(*lists)

@unpackdeftest_lists(self, n1, n2, n3):print("test_lists", n1, n2, n3)#字典

@data({'value1': 1, 'value2': 2}, {'value1': 1, 'value2': 2})

@unpackdeftest_dict(self, value1, value2):print("test_dict", value1, value2)

测试结果

test_dict 1 2test_dict1 2test_list1 2 3test_list1 2 3test_lists1 2 3test_lists1 2 3test_tuple (1, 2, 3)

test_tuple (1, 2, 3)

test_tuples (1, 2, 3)

test_tuples (1, 2, 3)

包含知识点

@unpack :当传递的是复杂的数据结构时使用。比如使用元组或者列表,添加 @unpack 之后, ddt 会自动把元组或者列表对应到多个参数上。字典也可以这样处理

当没有加unpack时,test_case方法的参数只能填一个;如元组的例子

当你加了unpack时,传递的数据量需要一致;如列表例子中,每个列表我都固定传了三个数据,当你多传或少传时会报错,而test_case方法的参数也要写三个,需要匹配上

当传的数据是字典类型时,要注意每个字典的key都要一致,test_case的参数的命名也要一致;如字典的例子,两个字典的key都是value1和value2,而方法的参数也是

当传的数据是通过变量的方式,如元组2、列表2,变量前需要加上*

DDT基础使用(三):传递json文件

json文件

{"first": [

{"isRememberMe": "True","password": "111111","username": "root"},"200"],"second": ["{'isRememberMe': True, 'password': '1111111', 'username': 'root'}","406"],"third": [1,2],"four": "123123"}

单元测试类

from ddt import *

#在测试类前必须首先声明使用 ddt

@ddtclassimoocTest(unittest.TestCase):

@file_data('F:/test/config/testddt.json')deftest_json(self, data):print(data)

测试结果

[{'isRememberMe': 'True', 'password': '111111', 'username': 'root'}, '200']

["{'isRememberMe': True, 'password': '1111111', 'username': 'root'}", '406']

[1, 2, 3, 4]123123

DDT基础使用(四):传递Yaml文件

yaml文件

unsorted_list:- 10

- 15

- 12sorted_list: [15, 12, 50 ]

单元测试类

from ddt import *

#在测试类前必须首先声明使用 ddt

@ddtclassimoocTest(unittest.TestCase):

@file_data('F:/test/config/testddt.yaml')deftest4(self, data):print("yaml", data)

测试结果

yaml [10, 15, 12]

yaml [15, 12, 50]

文章来源: www.cnblogs.com,作者:小菠萝测试笔记,版权归原作者所有,如需转载,请联系作者。

原文链接:https://www.cnblogs.com/poloyy/p/12274265.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【知识分享】异步调用与多线程的区别

随着拥有多个硬线程CPU(超线程、双核)的普及,多线程和异步操作等并发程序设计方法也受到了更多的关注和讨论。本文主要是想探讨一下如何使用并发来最大化程序的性能。 多线程和异步操作的异同 多线程和异步操作两者都可以达到避免调用线程阻塞…

华人AI界痛失“一代宗师”,计算机视觉之父黄煦涛教授去世

全世界只有3.14 % 的人关注了爆炸吧知识美东时间2020年4月25日夜间,华人计算机视觉一代宗师,黄煦涛教授(Thomas S. Huang)在美国印第安纳州逝世,享年 84 岁。由于他在图像处理、模式识别等计算机视觉领域作出的开创性贡…

oracle 参照完整性,Oracle中用表外键来保证系统参照完整性

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 Oracle中表的外键是保证系统参照完整性的手段,而参照完整性是指分布在两个表中的列所满足的具有主从性质的约束关系。外键涉及到两个表,其中一个称之为父项表,另一个…

关于数据仓库 — 总体工具介绍

数据仓库项目是以关系数据库为依托,以数据仓库理论为指导、以 OLAP为多层次多视角分析,以 ETL工具进行数据集成、整合、清洗、加载转换,以前端工具进行前端报表展现浏览,以反复叠代验证为生命周期的综合处理过程。最终目标是为了达…

你好,同学!在云端学习最潮的技术吧!

开学季大礼包9月开学了,作为学生的你,有想过在这个数字化年代,学最cool的技术吗?人工智能,物联网,云计算,还有区块链这些互联网产物影响着你的生活,也影响着你将来的职业发展。不论你…

seo关键词互点软件报价_SEO关键词优化收费问题和外包报价问题,一文详解

在竞争日益激烈的市场环境中,企业为了在互联网平台中获得较好的排名,以及实现产品的较好变现,大多数都是使用SEO搜索引擎,因为通过优化关键词可以不断地为用户创造“用户最想得到的”“最匹配”搜索结果,在快速找到心仪…

15张令人震撼的物理动图,看完惊呆了!

全世界只有3.14 % 的人关注了爆炸吧知识比抖音还上瘾看了会让人上瘾的物理动图,赶紧给家里的孩子看看吧,绝对让他开拓眼界,脑洞大开。1.有弹性的岩浆2.高速转动时,因向心力不足而被撕开的的CD(慢镜头)3.震荡…

linux目录结果说明,Linux目录结构及文件说明

Linux中所有文件都是从(/)根开始的,下面是典型的Linux目录结构说明:/:根目录/bin: binary 主要用来存放可执行文件/sbin: super bin 存放系统管理程序,通常只有管理员才有权限使用/boot: 存放内…

Java wait notify

2019独角兽企业重金招聘Python工程师标准>>> Java wait && notify ‍wait、notify和notifyAll方法是Object类的final native方法,所以这些方法不能被子类重写。 方法 notifyAll() Wakes up all threads that are waiting on this objects monito…

使用ETag协议实现ASP.NET Core API缓存

通常,我们在ASP.NET Core API服务端实现缓存,数据直接从缓存中取出,返回给客户端,以便加快响应速度。但是这样的做法,解决不了数据传输到客户端需要占用带宽带来的性能问题。这时,可以尝试使用ETag。ETag协…

手机通话有回声

今年9月份买了部新手机,某品牌手机,而且是3G手机,买之前都有先了解详细了才出手的,买回来之后一阵兴奋………,总比我原先的那部手机好多了,功能多,外观也好看多了,(原先的…

python读写文件实例_python读写文件的简单示例

这篇文章主要为大家详细介绍了python读写文件的简单示例,具有一定的参考价值,可以用来参考一下。 感兴趣的小伙伴,下面一起跟随512笔记的小编罗X来看看吧。 首先看一个例子: # 来自www.512pic.com f open(thefile.txt,w) #以写方…

深度优化sql 查询, 提升性能一百倍是什么概念?

正在做一个软件设计, 希望有个功能, 然而, 对于加上该功能后对系统性能造成的影响很是担忧. 可以说是, 一方面想要有这个功能, 另一方面又对性能问题是否能够解决很怀疑, 正处于犹豫不决状态. 于是决定进行实验. 首先对表结构和索引进行了优化, 初步结果还不错, 性能基本进入可…

女老师vs男老师的区别...

1 被帅到了2 失传已久的如来神掌??!!3 哎呦,谁拉我一把?4 决定到底要不要开始学习的我…5 女老师vs男老师监考的区别...6 函数广播体操7 这个打包装置够便捷,够酷炫!关键是省事你点的…

windows分区给linux根目录,解决双系统安装Linux之后找不到Windows分区

1.把硬盘分区回复给Windows用PQ把Linux分区,删除掉再新建个Windows分区就可以了把那个分区格称FAT32或NTFSwindows就可以用了呀!fdisk/mbr重建主引导记录我以前是这么做的,用dos启动盘启动,删除非dos分区,然后创建分区,把所有的自由空间都分给他就完了.现…

Redis Windows环境安装

1、下载Windows 版本 Redis: https://github.com/ServiceStack/redis-windows 2、 解压文件: F:\开源代码学习\01_Redis 打开 目录:F:\开源代码学习\01_Redis\src\msopentech\redis64-2.6.12.1 3、启动Redis 指向CMD命令: 4、测试安装成果&am…

python答题系统的代码_答题辅助python代码实现

本文实例为大家分享了答题辅助python具体代码,供大家参考,具体内容如下 from screenshot import pull_screenshot import time, urllib.request try: import Image except ImportError: from PIL import Image, ImageDraw import pytesseract # 屏幕顶端…

Hello Blazor:(11)全局截获事件执行

前言在Blazor中&#xff0c;我们使用on{DOM EVENT}"{DELEGATE}"这样的Razor语法在组件标记中指定委托事件处理程序&#xff1a;<button onclick"IncrementCount">Click me</button>但是没有提供解除委托的方法。比如&#xff0c;我们需要在某种…

ActionEnglish Notes

ActionEnglish 1 1. sound engineer 录音师2. Rumor has it that * 人们都说… 据说… * Rumor has it that Andy is a nice guy. * Rumar has it that he is a rather difficult sound engineer. * 类似的还有&#xff1a;It is said that… * 类似的还有&#xff1a;it is …