一、什么是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数据驱动实现自动化测试入门基础应用的更多相关文章

  1. [ddt02篇]十年测试老鸟帮您解析:ddt结合txt,excel,csv,mysql实现自动化测试数据驱动

    一.前言: 阅读此文之前请先阅读: [ddt01篇]十年测试老鸟帮您解析:ddt数据驱动入门基础应用:https://www.cnblogs.com/csmashang/p/12679448.html ...

  2. 十年测试老鸟告诉你--自动化测试选JAVA还是选Python--写给还在迷茫中的朋友

    一.前言 Python和Java哪个更适合做自动化测试?这是很多测试工程师从功能跨入自动化纠结的问题,今天测试老鸟来带大家详细分析一下!写给还在迷茫中的朋友! 首先可以确认的是提出这个问题的肯定是一个 ...

  3. python自动化测试应用-第6篇(WEB测试)--Selenium元素篇

    篇6                            python自动化测试应用-Selenium基础篇 --lamecho 1.1概要 大家好!我是lamecho(辣么丑),上一篇我们搭建好p ...

  4. 【RAC】 RAC For W2K8R2 安装--结尾篇(十)

    [RAC] RAC For W2K8R2 安装--结尾篇(十) 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其 ...

  5. java提高篇(十五)-----关键字final

    在程序设计中,我们有时可能希望某些数据是不能够改变的,这个时候final就有用武之地了.final是java的关键字,它所表示的是“这部分是无法修改的”.不想被改变的原因有两个:效率.设计.使用到fi ...

  6. 智普教育Python视频教程之入门基础篇,python笔记

    智普教育Python视频教程之入门基础篇,python笔记 print id()内存地址 type()变量类型 windows命令行下edit命令 python数据类型不需要指定类型 定义hostna ...

  7. 如何快速掌握DDT数据驱动测试?

    1.前言 (网盗概念^-^)相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为完全分离, 这样的测试脚本设计模式称为数据驱动.(网盗结束)当我们测试某个网站的登录功能时,我们往往会使用不同的用 ...

  8. Linux入门基础篇

    Linux入门基础篇 Linux诞生 Linux发行版本说明 Linux官方网站 Linux内核官方网站 比较有名的Linux发行版 虚拟机(Virtual Machine),一个虚拟的系统,安装在系 ...

  9. Java正则表达式入门基础篇

    正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为 ...

随机推荐

  1. Linux apache让网页编码错误

    今天帮一个小伙伴搞作业,遇到安装discuz乱码问题,就顺便在这里写一下,以供其他同学纠正. 开apache配置文件/etc/httpd/conf/httpd.conf 查找AddDefaultCha ...

  2. Simulink仿真入门到精通(一) Simulink界面介绍

    Simulink提供了一个动态系统建模.仿真和综合分析的集成环境,是MATLAB最重要的组件之一. 以模块为功能单位,通过信号线进行连接 通过GUI调配每个模块的参数 仿真结果以数值和图像等形象化方式 ...

  3. 双列集合Map相关面试题

    一.了解Map集合吗?Map集合都有哪些实现 HashMap HashTable LinkedHashMap TreeMap ConcurrentHashMap 二.HashMap和HashTable ...

  4. turtle学习笔记续集

    turtle(海龟)是Python重要的标准库之一,它能够进行基本的图形绘制.turtle图形绘制的概念诞生于1969年,成功应用于LOGO编程语言. turtle库绘制图形有一个基本框架:一个小海龟 ...

  5. MySQL设置外键报错 #1452 - Cannot add or update a child row: a foreign key constraint fails 解决方法

    MySQL数据库,当我尝试在A表中设置B表的主键为外键时,报出错误:#1452 - Cannot add or update a child row: a foreign key constraint ...

  6. SpringCloud系列之配置中心(Config)使用说明

    大家好,最近公司新项目采用SpingCloud全家桶进行开发,原先对SpringCloud仅仅只是停留在了解的初级层面,此次借助新项目的契机可以深入实践下SpringCloud,甚是Happy.大学毕 ...

  7. Vulnhub 靶场 Os-hackNos WP

    About Os-hackNos 描述 Difficulty : Easy to Intermediate Flag : 2 Flag first user And second root Learn ...

  8. vmware导入ova文件踩坑记

    问题来源 众所周知,所有的网络行为都会产生相应的网络流量,那么所有的网络攻击行为也有其对应的流量特点,那么是否能根据流量特点进而分析出其对应的是什么攻击行为呢? 我在虚拟机上使用vulnhub的靶场环 ...

  9. window 查看端口 杀端口

    最近写项目,总是出现端口被占用的问题,原来傻傻的把电脑重启一下,终于有一天受不了了,想要想办法解决.刚开始从网上找了好多教程,发现不行.开始自己尝试,终于,成功的将占用端口的进程杀掉.在此记录下过程( ...

  10. Cisco 综合配置(四)

    MSTP+HSRP 模式 为实现路由的备用.冗余: VLAN10,20 流量在CO-SW1上为active状态,在CO-SW2 上为standby状态, VLAN30,40 流量在CO-SW1上为st ...