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

目录:导读

前言

实施数据驱动步骤

数据驱动测试环境准备

测试步骤

数据存储

数据存在当前脚本中

json文件读取测试数据进行数据驱动测试

从xml读取数据进行数据驱动测试

总结

写在最后


前言

网盗概念相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为完全分离, 这样的测试脚本设计模式称为数据驱动。(网盗结束)当我们测试某个网站的登录功能时,我们往往会使用不同的用户名和密码来验证登录模块对系统的影响,那么如果我们每一条数据都编写一条测试用例,这无疑是增加了代码量,代码重复,且显得那么臃肿(谁不喜欢身材好的呢?你懂的),这时候我们可以使用不同数据驱动代码执行相同的用例测试不同的场景。

实施数据驱动步骤

我们再来说说实施数据驱动测试的步骤:

1.创建/准备测试数据

2.封装读取数据的方法,保留测试脚本调用的接口/属性(我们需要传递给脚本什么参数)

3.编写自动化测试脚本

4.脚本中调用封装好的处理数据文件的模块并引入测试数据

5.执行测试脚本并分析测试结果

数据驱动测试环境准备

1.安装python3.x开发环境(能看到此文章的应该都有这个环境,没有的自行百度吧)

2.安装数据驱动模块ddt

安装方式1:cmd下执行命令 pip install ddt

安装方式2:Links for ddt 下载 并解压任意目录,cmd 运行命令python setup.py install

3.验证安装 pycharm 新建python文件并输入 import ddt 运行无报错信息既表示安装成功或者cmd 命令依次输入python回车 import ddt回车 无保存信息表示安装成功

4.unittest框架和ddt进行数据驱动

测试步骤

1.访问地址:https://mail.sohu.com/fe/#/login

2.输入用户名和密码

3.点击登录按钮

4.判断是否登录成功

数据存储

数据存在当前脚本中

数据准备

我们要实现的是用户登录的操作,所以用户名和密码是必须有的,期望结果可以有也可以没有。数据类型看源代码!

实例代码 

简单数据驱动测试.py

源码分析

1.@ddt来装饰测试类(ddt数据驱动的规范写法,记住就ok)

2.@data(*value)装饰测试用例(也是一种规范,这边又涉及到装饰器,不懂的可以百度或者看我之前的文章又介绍,这边不再赘述,一句话两句话也说不清楚)记住:*value作用是打散数据,比如上面代码是用一个大列表存储两个小列表存放数据的,那么*value会得到两个小列表,每个小列表是一组测试数据

3.@unpack 解析*value数据,会把两个小列表里面的每一个数据取出来分别传递给我们测试用例的形参

方式1缺点

存储大量数据时,需查看源代码,不利于脚本的维护    

json文件读取测试数据进行数据驱动测试

数据准备

新建一个json文件(也可以是txt文件),将我们需要的两组测试数据以列表的形式写到json文件中,每组数据的每一项参数用相同的符号分割开(方便脚本读取数据)

实例代码

 test_data.json

使用数据文件驱动测试.py

源码分析

1.相对上个实例,这里使用了@file_data(文件路径), 参数必须是一个文件,这里是一个json文件, 数据可以是一个列表,也可以是一个字典

# 列表形式
["*******@sohu.com||xiaochao11520||https://mail.sohu.com/fe/#/homepage","*******@sohu.com||xiaochao11520||https://mail.sohu.com/fe/#/homepage"
]

2.测试用例接收的是一个字符串,需要对字符串进行处理,把用户名,密码,期望值解析出来

方式2优缺点

测试数据存在文件中,方便管理修改,添加数据,易于维护,缺点呢?emmm个人认为这种方式最好!

从xml读取数据进行数据驱动测试

数据准备

新建一个xml格式的文件,按照xml格式的语法需求,填写数据(xml文档我也不是很懂,简单的显示个文字啥的还可以^-^!)

xmlData.xml

实例代码

doXML.py

从xml文件读取数据驱动测试.py

源码分析

1.xml文档编写(深入了解需百度)有点像html,但又有不同,xml中的节点可以是任意名称,每个节点同样是成双出现

2.增加了doXML.py文档,用来解析xml文件,方便脚本获取数据(注释写的很详细,不懂的化可以慢慢调试,哪里不懂print哪里)

3.测试脚本和上面的实例大致相同(不懂的加我qq直接问)

方式3优缺点

优点是做到了数据与测试的分离,方便数据维护,缺点也比较明显,需要对xml文档有一定的了解

总结

上面的数据驱动测试步骤是我自己总结的,看了上面的实例对于步骤应该还算合理,下面是我在网上找到的数据驱动测试步骤(感觉比较官方!大家可以参考)

1.编写测试脚本, 脚本需要支持从程序对象, 文件,或者数据库读入数据。(个人观点:如果脚本先编写完,测试数据还未准备,后期还要做修改)

2.将测试脚本使用的测试数据存入程序对象,文件,或者数据库等外部介质中。(个人观点:这个阶段实为准备数据的阶段,也就是我们数据要存在哪里,理应放在第一步)

3.运行脚本过程中,循环调用存储在外部介质中的测试数据。(个人观点:这里要考虑我们如何读取,使用数据)

4.验证所有的测试结果是否符合预期结果

写在最后

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

看到这篇文章的人有觉得我的理解有误的地方,也欢迎评论和探讨~

你也可以加入下方的的群聊去和同行大神交流切磋

如何快速掌握DDT数据驱动测试?相关推荐

  1. python使用ddt_使用DDT数据驱动测试框架Python

    DDT(数据驱动测试)允许您用不同的测试数据运行一个测试用例,从而使它看起来像多个测试用例. DDT由一个类装饰@ddt(对应您的testcase子类)和两个方法装饰(对于您希望成倍增加的测试)组成: ...

  2. 一篇搞懂ddt数据驱动测试

    1. DDT简介 Python的unittest不像pytest,没有自带的数据驱动功能,所以如果在使用unittest时又想要用数据驱动来进行测试,那么就需要借助DDT来完成. DDT全称Data- ...

  3. 【python接口自动化】csdn涨薪技术- DDT数据驱动测试

    简单介绍 ​ DDT(Date Driver Test),所谓数据驱动测试,简单来说就是由数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变.通过使用数据驱动测试的方法,可以在需要验证多组数据 ...

  4. Unittest自动化测试框架教程(四)——Python中的数据驱动测试DDT

     " 数据驱动测试DDT(Data Drivern test),是自动化测试领域优势中亮眼的闪光点,在unittest测试框架中对数据驱动更是提供了强大的支持,文章通过基础概念的引入,介绍了 ...

  5. 基于Python的接口自动化unittest测试框架和ddt数据驱动详解

    引言 在编写接口自动化用例时,我们一般针对一个接口建立一个.py文件,一条接口测试用例封装为一个函数(方法),但是在批量执行的过程中,如果其中一条出错,后面的用例就无法执行,还有在运行大量的接口测试用 ...

  6. python 基于ddt实现数据驱动测试

    这篇文章主要介绍了python 基于DDT实现数据驱动测试的方法,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下 简单介绍 ​ ddt(date driver test),所谓数据驱 ...

  7. python数据驱动:基于ddt的数据驱动测试

    一.yaml文件的调用 二.csv文件的数据驱动 三.基于ddt的数据驱动测试 方法1: from selenium import webdriver import unittest from tim ...

  8. 不会数据驱动?还不快来看看,教你快速搭建数据驱动测试框架

    导语 说到数据驱动自动化测试,你会不会有这样的疑问:数据怎么管理?数据怎么才能驱动测试用例执行?到底怎么样才算数据驱动?那么本篇文章就教你如何进行数据驱动测试,相信你一定能对数据驱动自动化测试有一个不 ...

  9. python数据驱动读取用例_Python Selenium 之数据驱动测试

    数据驱动模式的测试好处相比普通模式的测试就显而易见了吧!使用数据驱动的模式,可以根据业务分解测试数据,只需定义变量,使用外部或者自定义的数据使其参数化,从而避免了使用之前测试脚本中固定的数据.可以将测 ...

最新文章

  1. 第一位女性商业程序员玛丽库姆斯去世,享年 93 岁!
  2. tensorflow 代码阅读
  3. mysql 自动重启 计划_解决MYSQL死机,定时重启MYSQL,wdcp计划任务设定方法,
  4. python全局解释锁_Python GIL 全局解释性锁介绍
  5. 永磁同步电机试验系统的设计
  6. MySQL分组函数的介绍
  7. 【机器学习】feature_importances_ 参数源码解析
  8. mysql报错:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre
  9. springboot使用JdbcTemplate完成对数据库的增删改查
  10. VMWare安装苹果Mac OS X
  11. 如何使用jstack?线程的状态?
  12. 谷歌浏览器无法携带cookie
  13. JDY-10M蓝牙简易组网教程
  14. MAML: meta learning 论文分析
  15. http协议及httpd配置
  16. 【翻译】MED 3D: TRANSFER LEARNING FOR 3D MEDICAL I MAGE ANALYSIS
  17. 展示正在活动时间内的活动,过期活动不显示
  18. Luogu P2656 采蘑菇
  19. securecrt导出linux日志文件,secureCRT保存屏幕输出内容
  20. laravel excel 2.1

热门文章

  1. 读完你就知道对话式人工智能的数据采集如何解决啦!
  2. 买笔记本电脑如何避坑之完结篇
  3. php推荐笔记本,全能笔记本电脑推荐2021-性价比高性能全能本排行榜
  4. PyAutoGUI 使用介绍
  5. 电梯卡数据分析修改延期梯控
  6. 扛把子级别的Java开源后台管理系统
  7. 竞价助手3.3rc1发布
  8. VSCode 添加自定义注释(附带红色警戒经典注释风格)
  9. BIgemap中添加局域网离线地图服务(内网服务)
  10. 导入MDF文件到数据库