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

news2024/12/28 4:53:50

 如何快速掌握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.验证所有的测试结果是否符合预期结果

写在最后

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

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

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/359954.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《Linux运维实战:Centos7.6基于docker-compose一键离线部署rabbitmq3.9.16+haproxy镜像模式高可用负载均衡集群》

一、部署背景 由于业务系统的特殊性,我们需要面向不通的客户安装我们的业务系统,而作为基础组件中的重要的一环,我们需要针对不同的客户环境需要多次部署 rabbitmq镜像模式高可用负载均衡集群,作为一个运维工程师,提升…

LeetCode 793. 阶乘函数后 K 个零

f(x) 是 x! 末尾是 0 的数量。回想一下 x! 1 * 2 * 3 * ... * x,且 0! 1 。 例如, f(3) 0 ,因为 3! 6 的末尾没有 0 ;而 f(11) 2 ,因为 11! 39916800 末端有 2 个 0 。 给定 k,找出返回能满足 f(x) …

Django框架之类视图

类视图 思考:一个视图,是否可以处理两种逻辑?比如get和post请求逻辑。 如何在一个视图中处理get和post请求 注册视图处理get和post请求 以函数的方式定义的视图称为函数视图,函数视图便于理解。但是遇到一个视图对应的路径提供…

【Vue/基础知识】Vue基础知识(一)

如果觉得我的分享有一定帮助,欢迎关注我的微信公众号 “码农的科研笔记”,了解更多我的算法和代码学习总结记录。或者点击链接扫码关注 【Vue/基础知识】Vue基础知识(一) 1、v-show 和 v-if 指令的共同点和不同点? 共…

【建议收藏】2023年最新最全PMP 报考条件和流程在这里!

PMP考试是由美国项目管理协会PMI发起的项目管理专业人士资格认证考试,在中国国内由中国国际人才交流基金会举办考试,考生在报名参加PMP考试前了解下PMP考试报名条件和流程是必须要做的功课,下面我为大家详细介绍2023年PMP考试报名条件和流程&…

音频信号处理笔记(二)

文章目录1.1.3 过零率1.1.4 谱质心和子带带宽1.1.5 短时傅里叶分析法1.1.6 小波变换相关课程: 音频信号处理及深度学习教程傅里叶分析之掐死教程(完整版)更新于2014.06.06 - 知乎 (zhihu.com)1.1.3 过零率 过零率:是一个信号符号…

[软件工程导论(第六版)]第7章 实现(复习笔记)

文章目录7.1 编码7.2 软件测试基础7.2.1 软件测试的目标7.2.2 软件测试的准则7.2.3 测试方法7.2.4 测试步骤7.2.5 测试阶段的信息流7.3 单元测试(模块测试)7.4 集成测试7.5 确认测试(验收测试)7.6 白盒测试技术7.7 黑盒测试技术7.…

微型光纤光谱仪的光路性能指标

标题光路指标波长范围灵敏度分辨率(波长)波长准确度与波长重复性光路稳定性杂散光与二级衍射效应光路指标 波长范围 对于微型光纤光谱仪来说,波长范围的概念有两个层面: 由灵敏度所限制的范围(Useable range&#xf…

python学习之10行代码制作炫酷的词云图(匹配指定图形形状)

文章目录前言一、需要准备什么?二、代码实现(示例)三、读入数据四、结果展示五、修改词云颜色后的运行结果展示:总结前言 想必大家有一个问题:什么是词云呢? 词云又叫名字云,是对文本数据中出…

java调用elasticSearch api

java操作es有两种方式 通过操作es的9300端口,9300是tcp端口,集群节点之间通信也是通过9300端口,会通过9300和es建立一个长连接,下面的es的依赖可以直接操作 但是随着es的版本的提升spring-data需要封装不同版本的es的jar包&#x…

Windows命令大全

Windows命令大全命令简介运行流程CMD命令—文件管理CMD命令—磁盘管理CMD命令—系统管理CMD命令—进程管理CMD命令—控制台管理CMD命令—其他管理Windows运行工具操作示例命令简介 CMD命令是一种命令提示符,CMD是command的缩写,即命令提示符&#xff08…

QT(57)-QWT+VS2019+QT5.12.4环境配置-x86

1.下载QWT源码。 2.用VS2019-MSVC2019编译生成6个文件。 3.配置6个文件,把6个文件放对应的目录下。 4. 用自带的example检测配置环境。 1.下载QWT源码 Qwt Users Guide: Qwt - Qt Widgets for Technical Applications2.用VS2019-MSVC2019编译生成6个文件. #qw…

测试工程师如何提高自动化测试覆盖率

前言 自动化测试一直是测试人员的核心技能,也是测试的重要手段之一。尤其是在今年所谓的互联网寒冬的行情下,各大企业对测试人员的技术水平要求的很高,而测试人员的技术水平主要集中在三大自动化测试领域,再加测试辅助脚本的编写…

350-401-补充

补充 拖图 Cloud和On-Premise; Cloud: easy to scale the capacity up and down highly agile On-Premises: infrstructure requires large and regular investments highly customizable 云: 易于扩大和缩小容量 非常敏捷 本地: 基础设施…

nodejs基于vue 网上商城购物系统

可定制框架:ssm/Springboot/vue/python/PHP/小程序/安卓均可开发 目录 1 绪论 1 1.1课题背景 1 1.2课题研究现状 1 1.3初步设计方法与实施方案 2 1.4本文研究内容 2 2 系统开发环境 4 2. 3 系统分析 6 3.1系统可行性分析 6 3.1.1经济可行性 6 3.1.2技术可行性 6 3.1.3运行可行…

15 个杀手级 你可能从未听说过的 JS 技术

我们都同意,在 Google 或 StackOverflow 上搜索 Javascript 错误修复或答案并不有趣🏴‍☠️。这里有 20 种简短而强大的 JavaScript 技术,它们可以最大限度地提高生产力 ⚡ 并最大限度地减少痛苦 🩸。让我们深入研究代码&#x1…

人们最想看到的是:你在坚持什么?

【人们最想看到的是:你在坚持什么】 长远规划才能对抗不确定性 品牌也能够对抗不确定性 想想这么多年东搞搞,西搞搞 最后缺乏正向积累的【厚度】 趣讲大白话:把每滴水尽量接到碗里 人吃的是饭,拉出来的是信息 *********** 人们在频…

大数据周会-本周学习内容总结0102

目录 01、ElasticSearch-学习总结 02、SpringbootElasticSearch构建博客检索系统 01、将MySQL数据同步到ES中 02、SpringBoot集成ES 03、本周学习计划 第一次周会 大数据总监、搜狐四年-中国搜索 【mapReduce】sql 大数据代表:Hadoop、spark、es、flink zookee…

写给安徽合肥高三的你——少年不惧岁月长,敢挽桑弓射玉衡

文章目录说说我的看法英雄不论出处想帮帮你做科研,拼出个锦绣前程,朗朗乾坤!我能做的可能很少,可是全世界都会为你让路说说我的看法 在今日头条看到你, 仿佛看到了年轻时候自己的影子,虽然自己现在在读研已…

PHP面向对象02:面向对象高级

PHP面向对象02:面向对象高级一、设计模式1. 单例模式2. 工厂模式二、面向对象三大特性1. 封装2. 继承3. 多态三、继承1. 实现继承2. 有限继承a. 属性都能继承b. 公有方法c. 受保护的方法d. 静态成员3. 重写4. PHP继承特点5. 静态延迟绑定6. 最终类和最终方法7. 抽象…