[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)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为 ...
随机推荐
- 这样学习Servlet,会事半功倍!!
前言 工作已经有一段时间了,如果让我重新学Servlet,我会怎么学呢?下面抛出两个常见的问题,我分开来解答 2020年了,还需要学Servlet吗? Servlet的学习路线(学习重点) 一.202 ...
- 【已解决】HDFS节点已经启动,但不能访问50070 ?
问题描述 通过start-dfs.sh启动了三个节点 但无法通过IP访问50070端口 问题分析 1.可能是防火墙没关,被拦截了 果然,防火墙没关 再将防火墙设为开机不启动 systemctl dis ...
- 逐浪web无障碍与国际化以及全民族语言支持白皮书
北京时间2019年5月10日,领先的门户网站与WEB内核服务厂商--上海Zoomla!逐浪CMS团队发布其年度重榜产品:逐浪CMS全民族语言与国际版,体验站点:http://demo2.z01.com ...
- 2653 区间xor
前言 这个题目在我之前那篇c++位运算的的随笔中提到过. 有兴趣的话去看看吧! 飞机场:https://www.cnblogs.com/laoguantongxiegogofs/p/12444517. ...
- racket学习-call/cc (let/cc)
Drracket continuation 文中使用let/cc代替call/cc Racket文档中,let/cc说明为: (let/cc k body ...+) Equivalent to (c ...
- vue基础----自定义组件directive ,bind,update,insert
<div id="app"> <input type="text" v-limit.3="msg" v-focus> ...
- 基于 HTML + WebGL 结合 23D 的疫情地图实时大屏 PC 版【转载】
前言 2019年12月以来,湖北省武汉市陆续发现了多例肺炎病例,现已证实为一种新型冠状病毒感染引起的急性呼吸道传染病并蔓延全国,肺炎疫情牵动人心,人们每天起来第一件事变成了关注疫情进展,期望这场天灾早 ...
- [BUG]Uncaught TypeError: Illegal invocation at HTMLDivElement.
<div id="clickMe" key="1">点我</div> clickMe.onclick = function (event ...
- WPF转换器之值转换器
WPF有两转转换器,一种是值转换器,另一种多值转换器,在开发过程中经常会从数据拉一些数据过来,比如存储性别的时候往往会用0或1,但在界面上肯定是要显示男或女,那么这个时候就可以用上值转换器 编写转换器 ...
- SpringBoot图文教程17—上手就会 RestTemplate 使用指南「Get Post」「设置请求头」
有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1-Spr ...