如何快速掌握DDT数据驱动测试?
前言
网盗概念相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为完全分离, 这样的测试脚本设计模式称为数据驱动。(网盗结束)当我们测试某个网站的登录功能时,我们往往会使用不同的用户名和密码来验证登录模块对系统的影响,那么如果我们每一条数据都编写一条测试用例,这无疑是增加了代码量,代码重复,且显得那么臃肿(谁不喜欢身材好的呢?你懂的),这时候我们可以使用不同数据驱动代码执行相同的用例测试不同的场景
实施数据驱动步骤
我们再来说说实施数据驱动测试的步骤:
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.验证所有的测试结果是否符合预期结果
总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

-
文档获取方式: -
加入我的软件测试交流群:680748947免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)
这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取
相关文章:
如何快速掌握DDT数据驱动测试?
前言 网盗概念相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为完全分离, 这样的测试脚本设计模式称为数据驱动。(网盗结束)当我们测试某个网站的登录功能时,我们往往会使用不同的用户名和密码来验证登录模块对系统的影响&#x…...
OpenCV如何实现背投(58)
返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV直方图比较(57) 下一篇:OpenCV如何模板匹配(59) 目标 在本教程中,您将学习: 什么是背投以及它为什么有用如何使用 OpenCV 函数 cv::calcBackP…...
5-在Linux上部署各类软件
1. MySQL 数据库安装部署 1.1 MySQL 5.7 版本在 CentOS 系统安装 注意:安装操作需要 root 权限 MySQL 的安装我们可以通过前面学习的 yum 命令进行。 1.1.1 安装 配置 yum 仓库 # 更新密钥 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022# 安装Mysql…...
【Jenkins】持续集成与交付 (八):Jenkins凭证管理(实现使用 SSH 、HTTP克隆Gitlab代码)
🟣【Jenkins】持续集成与交付 (八):Jenkins凭证管理(实现使用 SSH 、HTTP克隆Gitlab代码) 1、安装Credentials Binding、git插件2、凭证类型及用途3、(用户名和密码类型)凭证的添加和使用3.1 用户密码类型3.2 测试凭证是否可用3.3 开始构建项目3.3 查看结果(进入Jenk…...
开源模型应用落地-CodeQwen模型小试-SQL专家测试(二)
一、前言 代码专家模型是基于人工智能的先进技术,它能够自动分析和理解大量的代码库,并从中学习常见的编码模式和最佳实践。这种模型可以提供准确而高效的代码建议,帮助开发人员在编写代码时避免常见的错误和陷阱。 通过学习代码专家模型&…...
Arch Linux安装macOS
安装需要的包 sudo pacman -S qemu-full libvirt virt-manager p7zip yay -S dmg2img安装步骤 cd ~ git clone --depth 1 --recursive https://github.com/kholia/OSX-KVM.git cd OSX-KVM # 选择iOS版本 ./fetch-macOS.py #将上一步下载的BaseSystem.dmg转换格式 dmg2img -…...
接口自动化框架篇:Pytest + Allure报告企业定制化实现!
接口自动化框架是现代软件开发中的重要组成部分,能够帮助开发团队提高测试效率和质量。本文将介绍如何使用Pytest作为测试框架,并结合Allure报告进行企业定制化实现。 目标规划 在开始编写接口自动化测试框架之前,我们需要先进行目标规划。…...
保持 Hiti 证卡打印机清洁的重要性和推荐的清洁用品
在证卡印刷业务中,保持印刷设备的清洁至关重要。特别是对于 Hiti 证卡打印机来说,它们是生产高质量证卡的关键工具。保持设备清洁不仅可以保证打印质量和效率,还可以延长其使用寿命。本文将探讨保持 Hiti 证卡打印机清洁卡的重要性࿰…...
Unity C#的底层原理概述
文章目录 前言IL与IL2CPP总结 前言 看到底层二字,会感到很高深,好似下一秒就要踏入深渊。实际上,对于C#底层的理解非常简单,比冒泡排序这种基础算法还要简单。 底层的两种机制:Mono和IL2CPP。 IL2CPP其中的"2&qu…...
国产数据库的发展势不可挡
前言 新的一天又开始了,光头强强总不紧不慢地来到办公室,准备为今天一天的工作,做一个初上安排。突然,熊二直接进入办公室,说:“强总老大,昨天有一个数据库群炸了锅了,有一位姓虎的…...
权益商城系统源码 现支持多种支付方式
简介: 权益商城系统源码,支持多种支付方式,后台商品管理,订单管理,串货管理,分站管理,会员列表,分销日志,应用配置。 上传到服务器,修改数据库信息ÿ…...
python安装问题及解决办法(pip不是内部或外部命令也不是可运行)
pip是python的包管理工具,使python可在cmd(命令行窗口,WinR后输入cmd)中执行 针对 “pip不是内部或外部命令也不是可运行” 问题,需要在安装的时候将python添加到环境变量中 上图第三个选项必须勾选才能在cmd中使用pi…...
Json高效处理方法
一、参考我之前的博客,Delphi可以很方便的把类和结构体转换成JSON数据,但是数据量大了,就会非常之慢,1万条数据需要20秒左右。如果引用Serializers单元,那么100万数据只需要4秒左右,每秒处理20万+,速度还是很快的。 二、写一个简单的类  TPeople = class private …...
若依分离版-前端使用echarts组件
1 npm list:显示已安装的模块 该命令用于列出当前项目的所有依赖关系,包括直接依赖和间接依赖。执行 npm list 时,npm 将从当前目录开始,递归地列出所有已安装的模块及其版本信息 npm list 2 npm outdated:用于检查当前项目中的npm包是否有…...
android native开发
framwork 一些重要的流程都是要放到native中做的 原因也很简单,效率,尤其是针对性能优化方面的,更离不开native开发 目前针对native开发也回顾下,总结下经验 1 jni开发有两种,app端一般是静态模式,要有jav…...
Partisia Blockchain 生态zk跨链DEX上线,加密资产将无缝转移
在 5 月 1 日,由 Partisia Blockchain 与 zkCross 创建合作推出的 Partisia zkCrossDEX 在 Partisia Blockchain 生态正式上线。Partisia zkCrossDEX 是 Partisia Blockchain 上重要的互操作枢纽,其融合了 zkCross 的 zk 技术跨链互操作方案,…...
Vue3组合式API + TS项目中手写国际化插件
文章目录 1. 在项目中创建一个国际化插件的文件i18n.ts2. 创建语言模块json3. 注册插件4. 语言切换组件5. 使用插件(ts中使用全局需注意点) 1. 在项目中创建一个国际化插件的文件i18n.ts <!-- plugins/i18n.ts --> export const i18nPlugin {install(app: any, option:…...
深入解析Jackson的ObjectMapper:核心功能与方法指南
com.fasterxml.jackson.databind.ObjectMapper 是Jackson库的核心类,负责JSON序列化与反序列化的重任。本文旨在详细介绍其成员属性和方法,帮助开发者更好地利用Jackson进行Java对象与JSON数据之间的转换操作。 初始化与配置 构造与复制 默认构造函数…...
计算机是如何执行指令的
你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…...
Jetson Orin NX L4T35.5.0平台相机stop导致系统死机问题调试
1. 环境 硬件:国产OrinNX套件 系统版本: L4T35.5.0 相机: SDI 相机,1080P50fps 2. 问题描述 移植驱动已经开始正常采集相机图像,但是会出现以下问题: 采集流程如下: (1)start SDI camera (2)gst-launch-1.0采集图像 gst-launch-1.0 v4l2src device=/dev/vide…...
5个高效处理PDF的Windows命令行工具:Poppler完整解决方案
5个高效处理PDF的Windows命令行工具:Poppler完整解决方案 【免费下载链接】poppler-windows Download Poppler binaries packaged for Windows with dependencies 项目地址: https://gitcode.com/gh_mirrors/po/poppler-windows 在Windows平台上处理PDF文档时…...
开源首发:DocCenter — AI 时代的 HTML工作台深度解析
Tags:Python aiohttp 开源项目 AI工具 前端工程 工具分享 Claude ChatGPT 专栏:「工具开源」/「DocCenter」 一、痛点:AI 时代的文档散落病 过去一年,我每天被 AI 生成的 HTML 文件淹没。 Claude artifacts 一天 20 个、ChatGPT…...
【SI_DP2.0 01】一文深入了解DP2.0
1. DP概述1.1. DP版本演进版本发布年份核心速率关键技术/新增功能工程意义DP 1.02006单通道 2.7Gbps(RBR/HBR)初代标准,替代VGA/DVI,支持音视频同步传输奠定DP基础架构,定义Main-Link/AUX/HPD三层DP 1.1a2007同上加入H…...
PT助手Plus终极指南:3步实现浏览器PT下载自动化
PT助手Plus终极指南:3步实现浏览器PT下载自动化 【免费下载链接】PT-Plugin-Plus PT 助手 Plus,为 Microsoft Edge、Google Chrome、Firefox 浏览器插件(Web Extensions),主要用于辅助下载 PT 站的种子。 项目地址: …...
FPGA神经形态计算架构与Class 7实现详解
1. FPGA神经形态计算架构概述 神经形态计算是一种模拟生物神经系统信息处理机制的新型计算范式,其核心在于脉冲神经网络(SNiking Neural Network, SNN)的硬件实现。与传统人工神经网络不同,SNN通过精确模拟神经元间的脉冲时序依赖可塑性(STDP)来实现更接…...
大模型“读“懂你的秘密:Tokenize分词技术全解析!
本文深入探讨了大模型如何处理文本输入。核心流程为文本经过Tokenize分词,转为token,再映射为token ID并转化为embedding向量。介绍了三种基础分词粒度:按词切、按字符切、按子词切,并详细解析了四种常见tokenizer方法:…...
深度解析Claude源码泄露事件:从Transformer到AI开源生态的技术思考
1. 项目概述与背景解析最近在开发者社区里,关于“noya21th/claude-source-leaked”这个仓库的讨论热度不低。作为一个长期关注AI模型开源生态的从业者,我第一眼看到这个标题时,内心是既好奇又警惕的。简单来说,这是一个在GitHub上…...
GPT-4 Turbo访问权、优先响应、高级数据分析——ChatGPT Plus五大隐藏权益深度拆解,92%用户根本没用全
更多请点击: https://intelliparadigm.com 第一章:ChatGPT Plus订阅值不值得买 ChatGPT Plus 提供每月 $20 的固定订阅服务,主打 GPT-4 模型访问、优先响应队列、文件上传解析(PDF/CSV/TXT 等)及自定义 GPTs 功能。是…...
2026年三款最值得在线预约小程序,解决您的预约难题
本文围绕在线预约小程序这一核心主题展开,系统梳理了2026年主流平台的特性与差异。内容涵盖微信、支付宝、抖音三大平台的功能对比、适用场景及操作流程解析,并结合实际案例深度剖析技术实现原理。同时提供选型指南与实操建议,帮助用户根据业…...
斯坦福CS229机器学习中文教程:从零到一的实战学习指南
斯坦福CS229机器学习中文教程:从零到一的实战学习指南 【免费下载链接】Stanford-CS-229 A Chinese Translation of Stanford CS229 notes 斯坦福机器学习CS229课程讲义的中文翻译 项目地址: https://gitcode.com/gh_mirrors/st/Stanford-CS-229 你是否曾因英…...
