一、什么是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. 1,Linux(CentOS)中的基本配置

    1,hostname(主机名) 查看主机名:hostname 临时修改主机名:hostname hadoop1 永久修改主机名:vi etc/sysconfig/network :  [NETWORK ...

  2. 安卓 打飞机 app 开发 第一篇

    先上效果图 其实,当时刚买 htc G8 的时候(那时北京的房价还是6千一平),安卓2.1 ,2.3 的时候就已经有安卓方面的开发的兴趣,但后来就没有弄过... today 突然想起来,手机上连个游戏 ...

  3. scrapy启动

    创建项目 在开始爬取之前,您必须创建一个新的Scrapy项目. 进入您打算存储代码的目录中,运行下列命令: scrapy startproject scrapytest 第一种scrapy gensp ...

  4. search(1)- elasticsearch结构概念

    上篇提到选择了elasticsearch ES作为专业化搜索引擎的核心,这篇讨论一下ES的基本结构和应用概念.首先,从硬结构方面来讲:ES是在一个集群(cluster)环境里运行的,所以ES应该具备高 ...

  5. webpack的require.context()实现路由“去中心化”管理

    最近在开发一个大型vue单页面应用的时候,项目最初是将所有的路由写在一个router.js的文件里. const router = new Router({ mode: "history&q ...

  6. 再说scss

    1. CSS预处理器 定义了一种新的专门的编程语言,编译后成正常的CSS文件.为CSS增加一些编程的特性,无需考虑浏览器的兼容问题,让CSS更加简洁,适应性更强,可读性更佳,更易于代码的维护等诸多好处 ...

  7. VUE npm run dev 启动时,报了一大堆错误 Node Sass could not find a binding for your current environment: Windows 64-bit with Node.js 7.x

    npm run dev 启动时,报了一大堆错误 Module build failed: Error: Missing binding E:\2017VocaSchool\vocationWeb\no ...

  8. 后端开发使用pycharm的技巧

    后端开发使用pycharm的技巧 目录 后端开发使用pycharm的技巧 1.使用说明 2.database 3.HTTP Client 1.使用说明 首先说明,本文所使用的功能为pycharm专业版 ...

  9. [Docker8]Dockerfiles

    Comment INSTRUCTION arguments FROM 基于哪个base镜像 RUN 执行命令并创建新的镜像层,run经常用于安装软件包 MAINTAINER 镜像创建者 copy 将文 ...

  10. [模板] dfs序

    B.树之呼吸-贰之型-dfs序 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 42 (16 users) Total Accepted ...