[ddt01篇]十年测试老鸟帮您解析:ddt数据驱动实现自动化测试入门基础应用
一、什么是DDT数据驱动框架

全称:data driver test数据驱动测试框架,可以完美的应用于unittest框架实现数据驱动。ddt使用简介:
1.测试数据为多个字典的list类型
2.测试类前加修饰@ddt.ddt
3.用例前加修饰@ddt.data() 或 @ddt.file_data()
4.运行后测试会自动加载成三个单独的用例
注意:@data装饰符可以把参数当成测试数据,参数可以是单个值、列表、元祖、字典,对于列表和元祖需要使用@unpack装饰符把元祖和列表解析成多个参数。
二、ddt数据驱动框架的安装和使用方式
1.安装方式一:在dos窗口中使用命令:pip install ddt 安装 (建议用这种)
验证是否安装成功:在dos命令中输入python进入python环境,然后输入import ddt,如果没有报错则说明安装成功!如下图所示:
2.安装方式二:直接访问:https://pypi.org/project/ddt/#files 下载ddt源码(ddt-1.2.2.tar.gz)。下载后解压,然后在dos命令中切换到setup.py所在目录,执行python setup.py install 进行安装。
3.把ddt导入项目中。
File->Settings->project:项目名->加号->输入ddt->install package
4.ddt使用方式和常用模块
使用方式:
ddt是通过装饰器的形式来调用的
ddt常用模块:
@ddt(申明当前类使用ddt框架),
@data(用于传参),
@unpack(将参数解包,一般针对元组和列表),
@data_file(ddt读取yaml/json文件)
三、@ddt,@data,@unpack的基本使用方法。
1.分别传入单个数字、字符串、元组、列表、集合、字典做一个案例。如:
第一组案例:
@ddt(100)
def testcase1(self,name):
print(name)
@ddt('诸葛')
def testcase1(self,name):
print(name)
@ddt(('诸葛','司马懿','韩信'))
def testcase1(self,name):
print(name)
@ddt(['诸葛','司马懿','韩信'])
def testcase1(self,name):
print(name)
@ddt({'诸葛','魏国':'司马懿','楚国':'韩信'})
def testcase1(self,name):
print(name)
@ddt({'蜀国':'诸葛','司马懿','韩信'})
def testcase1(self,name):
print(name)
第二组案例:使用@unpack对单个元组和列表解包。
#unpack解析单个元组
@data(('诸葛','司马'))
@unpack
def test1_data(self,args1,args2):
print(args1,args2) #unpack解析单个列表
@data(['诸葛','司马'])
@unpack
def test2_data(self,args1,args2):
print(args1,args2)
2.分别传入多个数字、字符串、元组、列表、集合、字典做一个案例。如:
第一组案例:
代码可自己尝试:注意:查看运行结果,用例运行了多次。
第二组案例:使用@unpack解包:多个元组和列表,如:
#data传入多个元组,unpack对每个元组解析
@data(('诸葛','司马'),('马超','关羽'))
@unpack
def test1_data(self,args1,args2):
print(args1,args2) #data传入多个列表,unpack对每个列表解析
@data(['诸葛','司马'],['马超','关羽'])
@unpack
def test1_data(self,args1,args2):
print(args1,args2)
注意:
(1) 如果传入:[('诸葛','司马'),('马超','关羽')],则@unpack解析后得到('诸葛','司马')和('马超','关羽'),需要两个参数接收,用例只执行一次,所以得出@unpack解析最外层的元祖或列表。
(2) 如果传入的是字典列表(list of dict) 分解的参数名必须跟键名一致。
四、请继续关注[ddt02篇]
[ddt02篇]十年测试老鸟帮您解析:ddt结合txt,excel,csv,mysql实现自动化测试数据驱动:https://blog.csdn.net/pengjiangchun/article/details/105451020
如果你此文你也有同感,如果你觉得此文对你有帮助,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入:
软件测试技术群:695458161,群里发放的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。
作者:来自公众号:软测之家
出处:https://www.cnblogs.com/csmashang/p/12679448.html
原创不易,欢迎转载,但未经作者同意请保留此段声明,并在文章页面明显位置给出原文链接。
[ddt01篇]十年测试老鸟帮您解析:ddt数据驱动实现自动化测试入门基础应用的更多相关文章
- [ddt02篇]十年测试老鸟帮您解析:ddt结合txt,excel,csv,mysql实现自动化测试数据驱动
一.前言: 阅读此文之前请先阅读: [ddt01篇]十年测试老鸟帮您解析:ddt数据驱动入门基础应用:https://www.cnblogs.com/csmashang/p/12679448.html ...
- 十年测试老鸟告诉你--自动化测试选JAVA还是选Python--写给还在迷茫中的朋友
一.前言 Python和Java哪个更适合做自动化测试?这是很多测试工程师从功能跨入自动化纠结的问题,今天测试老鸟来带大家详细分析一下!写给还在迷茫中的朋友! 首先可以确认的是提出这个问题的肯定是一个 ...
- python自动化测试应用-第6篇(WEB测试)--Selenium元素篇
篇6 python自动化测试应用-Selenium基础篇 --lamecho 1.1概要 大家好!我是lamecho(辣么丑),上一篇我们搭建好p ...
- 【RAC】 RAC For W2K8R2 安装--结尾篇(十)
[RAC] RAC For W2K8R2 安装--结尾篇(十) 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其 ...
- java提高篇(十五)-----关键字final
在程序设计中,我们有时可能希望某些数据是不能够改变的,这个时候final就有用武之地了.final是java的关键字,它所表示的是“这部分是无法修改的”.不想被改变的原因有两个:效率.设计.使用到fi ...
- 智普教育Python视频教程之入门基础篇,python笔记
智普教育Python视频教程之入门基础篇,python笔记 print id()内存地址 type()变量类型 windows命令行下edit命令 python数据类型不需要指定类型 定义hostna ...
- 如何快速掌握DDT数据驱动测试?
1.前言 (网盗概念^-^)相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为完全分离, 这样的测试脚本设计模式称为数据驱动.(网盗结束)当我们测试某个网站的登录功能时,我们往往会使用不同的用 ...
- Linux入门基础篇
Linux入门基础篇 Linux诞生 Linux发行版本说明 Linux官方网站 Linux内核官方网站 比较有名的Linux发行版 虚拟机(Virtual Machine),一个虚拟的系统,安装在系 ...
- Java正则表达式入门基础篇
正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为 ...
随机推荐
- 开篇词The Start以及[Vjudge][HDU2242]空调教室
开篇 这是我写的第一篇记录好题的博客,也是博客园上我发布的第一篇博客. 以后我的所有博客都将在洛谷和博客园上同时发布,同志们有兴趣的在哪里都可以看一看. [https://www.luogu.com. ...
- Java 并发系列之一
Java 并发系列之一 简单的总结了一些 Java 常用的集合之后,发现许多集合都针对多线程提供了支持,比如 ConcurrentHashMap 使用分段锁来提高多线程环境下的性能表现与安全表现.所以 ...
- 02-influxdb执行命令方式
influxdb执行命令方式 1. 三种操作方法 InfluxDB提供三种操作方式: 1)客户端命令行方式 2)HTTP API接口 3)各语言API库 2. 客户端命令行方式 查看influxdb占 ...
- SpringBoot内置的各种Starter是怎样构建的?--SpringBoot源码(六)
注:该源码分析对应SpringBoot版本为2.1.0.RELEASE 1 温故而知新 本篇接 外部配置属性值是如何被绑定到XxxProperties类属性上的?--SpringBoot源码(五) 温 ...
- Lucene查询语法汇总
目录 一.单词查询 二.通配符查询 三.模糊查询 四.近似查询 五.范围查询 六.优先级查询 七.逻辑操作 八.括号分组 九.转义特殊字符 Lucene是目前最为流行的开源全文搜索引擎工具包,提供了完 ...
- Checkbox 勾上 不让勾下 同步手动刷新复选框状态 iview
<Checkbox v-show="!disabledForm" ref="youwubianhuaRef" :value="youwubian ...
- $api 回调函数then应用
getReceiveListAPI (param) { return new Promise(resolve => { let params = { // idCard: this.idCard ...
- liunx 安装 zookeeper(转)
转自:https://www.cnblogs.com/expiator/p/9853378.html linux安装zookeeper及使用 一.安装条件 想要安装zookeeper,必须先在linu ...
- kerberos系列之hdfs&yarn认证配置
一.安装hadoop 1.解压安装包重命名安装目录 [root@cluster2_host1 data]# tar -zxvf hadoop-2.7.1.tar.gz -C /usr/local/ [ ...
- rbac权限+中间件 初识
rbac权限+中间件 1.权限组件rbac 1.什么是权限 1 项目与应用 2 什么是权限? 一个包含正则表达式url就是一个权限 who what how ---------->True or ...