Python+Pytest+Yaml+Allure数据参数化(DDT)数据驱动(一)
我们在做数据之前要知道几个问题
1、在代码层面怎么来数据驱动
2、yaml文件是什么
3、怎么用yaml文件实现对应的数据驱动
我们用的是pytest框架所以相对来说是简单的,我们通过pytest框架来实现,而框架中要数据驱动用到我们装饰器就好啦@pytest.mark.parametrize(参数名,参数数据)
那参数化就是DDT :把对应的数据提取出来 进行统一维护
参数1:参数的名字
参数2: 参数的数据列表
那我们的参数数据要什么数据格式?我们知道有字典 元祖 字符串....
我们要对应的数据话肯定是多组数据
[数据1,数据2,数据3] 列表
(数据1,数据2,数据3)元祖
[{k:v},{k:v},{k:v}]列表套字典------推荐,用的比较多
[[1],[2],[3]]列表套列表
[(1),(2),(3)]列表套元祖
好 那我们现在简单写一个小demo
import pytest
# data 是我们的数据
data = ['小王','小张','小李']
# 通过用这个装饰器(data传入的参数列表需要有一个参数名来接收name)
@pytest.mark.parametrize('name',data)
# 给到name以后 需要给到test_01参数 去接受这个值
def test_01(name):print('当前运行的用户名是:',name)if __name__ == "__main__":pytest.main(['-vs'])
运行结果
我们中间的数据项有多少个,他就会执行多少次
我们的data中有三个 就执行三次
那如果列表套列表我们要怎么写呢--通过下标获取
import pytest
# data 是我们的数据
data = [['小王',22],['小张',23],['小李',24]]
# 通过用这个装饰器(data传入的参数列表需要有一个参数名来接收name)
@pytest.mark.parametrize('name',data)
# 给到name以后 需要给到test_01参数 去接受这个值
def test_01(name):print('当前运行的用户名是:',name[0])print('当前运行的用户年龄是:', name[1])if __name__ == "__main__":pytest.main(['-vs'])
运行结果

好 我们学会可以后在项目中怎么应用呢?
我们对应的登陆中是不是有对应的账户名密码等等一些参数
那我们可以在登陆写一下测试用例
登陆成功 密码错误 用户名错误 等等。。。
那我们来写一下
先导包
@pytest.mark.parametrize()
首先我们的格式是列表套字典
data = [{'username': 'aaa', 'password': '1245346', 'res': '登录成功'},{'username': 'aaa', 'password': '1234ddd56', 'res': '密码错误'},{'username': 'djjdjd', 'password': '15634432', 'res': '用户名不存在'}
]
然后把data和我们的参数传入装饰器中
@pytest.mark.parametrize('case_info',data)
再把我的case_info传入方法中
def test_01_login(case_info):
接下来我们data中和断言中也需要相应改动---引用上面的数据
data = {'accounts': case_info['username'],'pwd': case_info['password'], 'type': 'username'}
assert mag_ret == case_info['res'], f'错误,我们当前返回的值是:{mag_ret}'
写好啦 我们接下来运行看看
第一个用例通过 这是正向测试 期望和实际一样

第二个也是 我们改了密码 期望是密码错误 实际返回的也是密码错误

第三个 账号密码都不对 期望返回的是用户名不存在但是实际返回的是登陆账号不存在

我们看懂了DDT了以后只需要维护我们的测试用例,如需要测试 直接引用就好啦 是不是很方便
但是目前我们只是把测试数据提取出来
那不同的接口可不可以把接口全部提取出来呢?---可以
因为我们发送请求无非是四要素不一样 你需要提取什么就提取什么
那我们这些都提取出来,我们可以通过yaml文件来进行操作,或者说我们需要有一个存放数据的地方excel 、yaml 也可以数据库这些都是可以的。
以上我们知道了 我们的数据驱动是通过装饰器来实现
那我们接下来说yaml是什么
相关文章:
Python+Pytest+Yaml+Allure数据参数化(DDT)数据驱动(一)
我们在做数据之前要知道几个问题 1、在代码层面怎么来数据驱动 2、yaml文件是什么 3、怎么用yaml文件实现对应的数据驱动 我们用的是pytest框架所以相对来说是简单的,我们通过pytest框架来实现,而框架中要数据驱动用到我们装饰器就好啦pytest.mark.p…...
BASLER工业相机维修不能触发拍照如何处理解决这个问题
BASLER工业相机维修不能触发拍照如何处理解决这个问题?最近遇到挺多工业相机维修咨询这个不能触发拍照的案例,所以今天优米佳维修的技术就抽空整理了这篇关于BASLER相机不能触发拍照的处理方法分享给大家。 当碰到巴斯勒工业相机不能触发拍照的问题&…...
Could not locate device support files.
报错信息:Failure Reason: The device may be running a version of iOS (13.6.1 17G80) that is not supported by this version of Xcode.[missing string: 869a8e318f07f3e2f42e11d435502286094f76de] 问题:xcode15升级到xcode16之后,13.…...
linux系统中常用文件日常使用命令记录
我们办公机是Ubuntu系统; 记录下工作中经常使用的几个文件或命令或一些零碎的知识点: (该文档会持续更新) 查看系统信息: uname -a cat /etc/product-info cat /etc/os-version 存放系统启停脚本 /etc/init.d/ 存放源…...
【C++打怪之路Lv16】-- map set
🌈 个人主页:白子寰 🔥 分类专栏:重生之我在学Linux,C打怪之路,python从入门到精通,数据结构,C语言,C语言题集👈 希望得到您的订阅和支持~ 💡 坚持…...
TPU-MLIR 项目源码结构分析
TPU-MLIR 项目源码结构分析 本文用作学习记录和交流分享,主要内容为 TPU-MLIR 的源码框架分析和构建流程分析。源码地址:https://github.com/sophgo/tpu-mlir 文件结构 从最外层开始分析 envsetup.sh 该脚本用于配置和初始化开发环境,其中…...
IDEA Maven 打包找不到程序包错误或找不到符号,报错“程序包不存在“
参考文章:https://blog.csdn.net/yueeryuanyi/article/details/14211090 问题:IDEA Maven 打包找不到程序包错误或找不到符号,报错“程序包不存在“编译都没问题 解决思路 – >【清除缓存】 1. 强制刷新Maven缓存 选择 Maven 标签,Exe…...
Sourcetree:一款强大的Git客户端
Sourcetree:一款强大的Git客户端 Sourcetree是一款由Atlassian开发的免费Git客户端,它提供了一个直观的图形界面,让用户能够轻松地管理他们的版本控制系统。无论是初学者还是有经验的开发者,Sourcetree都能提供方便快捷的Git操作…...
Linux环境变量与本地变量
文章目录 Linux环境变量与本地变量什么是环境变量查看环境变量设置环境变量本地变量命令行参数 Linux环境变量与本地变量 什么是环境变量 操作系统或运行时环境中存储的一些变量,用来存储与进程或系统相关的配置信息。这些变量在进程启动时由操作系统或Shell读取&…...
ChatGPT的应用场景:开启无限可能的大门
ChatGPT的应用场景:开启无限可能的大门 随着人工智能技术的快速发展,自然语言处理领域迎来了前所未有的突破。其中,ChatGPT作为一款基于Transformer架构的语言模型,凭借其强大的语言理解和生成能力,在多个行业和场景中展现出了广泛的应用潜力。以下是ChatGPT八个最具代表…...
QT按下两次按钮,保存这期间内变换的QtextEdit控件内的数据
这个功能在项目中很常见,对界面里某个控件的数据进行记录,我这个是每秒记录5次,实际就是每200ms触发一次定时器,来满足需求。 .h文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QtSerialPort> …...
daos源码编译
1. 前言 本文详细介绍如何在almalinux8.9上编译daos.2.0.0源码。系统环境如下: daos: 2.0.0 linux os: almalinux 8.9 linux kernel: 4.18.0-513.5.1.el8_9.x86_64之所以选择2.0.0版本,是因为daos从2.0.0开始是一个全新的架构设计&a…...
HTML飞舞的爱心
目录 系列文章 写在前面 完整代码 代码分析 写在后面 系列文章 序号目录1HTML满屏跳动的爱心(可写字)2HTML五彩缤纷的爱心3HTML满屏漂浮爱心4HTML情人节快乐5HTML蓝色爱心射线6HTML跳动的爱心(简易版)7HTML粒子爱心8HTML蓝色…...
C++中智能指针的使用及其原理 -- RAII,内存泄漏,shared_ptr,unique_ptr,weak_ptr
目录 1.智能指针的使用场景分析 2.RAII和智能指针的设计思路 3.C标准库智能指针的使用 4.智能指针的原理以及模拟实现 5.shared_ptr循环引用问题和weak_ptr 5.1shared_ptr循环引用问题 5.2weak_ptr的原理和部分接口 5.3weak_ptr的简单模拟实现 6. shared_ptr的线程安…...
Linux服务器安装mongodb
因为项目需要做评论功能,领导要求使用mongodb,所以趁机多学习一下。 在服务器我们使用docker安装mongodb 1、拉取mongodb镜像 docker pull mongo (默认拉取最新的镜像) 如果你想指定版本可以这样 docker pull mongo:4.4&#…...
Android11修改摄像头前后置方法,触觉智能RK3568开发板演示
本文介绍在Android11系统下,修改摄像头前后置属性的方法。使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Android等操作系统&#…...
leetcode 212. 单词搜索 II
给定一个 m x n 二维字符网格 board 和一个单词(字符串)列表 words, 返回所有二维网格上的单词 。 单词必须按照字母顺序,通过 相邻的单元格 内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一…...
Taro 鸿蒙技术内幕系列(三) - 多语言场景下的通用事件系统设计
基于 Taro 打造的京东鸿蒙 APP 已跟随鸿蒙 Next 系统公测,本系列文章将深入解析 Taro 如何实现使用 React 开发高性能鸿蒙应用的技术内幕 背景 在鸿蒙生态系统中,虽然原生应用通常基于 ArkTS 实现,但在实际研发过程中发现,使用 C…...
《Docker Registry(镜像仓库)详解》
一、引言 在容器化技术日益普及的今天,Docker 已成为众多开发者和企业的首选工具。而 Docker Registry(镜像仓库)作为 Docker 生态系统中的重要组成部分,负责存储和分发 Docker 镜像。本文将深入探讨 Docker Registry 的概念、功能…...
AI前景分析展望——GPTo1 SoraAI
引言 人工智能(AI)领域的飞速发展已不仅仅局限于学术研究,它已渗透到各个行业,影响着从生产制造到创意产业的方方面面。在这场技术革新的浪潮中,一些领先的AI模型,像Sora和OpenAI的O1,凭借其强大…...
openclaw官网入口中文版_一键1分钟免费使用小龙虾AI!
好的,这是为您撰写的文章: OpenClaw官网入口中文版_一键1分钟免费使用小龙虾AI! 在当今人工智能技术蓬勃发展的时代,便捷、高效的AI工具正逐渐成为我们工作和学习的得力助手。今天,就让我们一起了解一个新兴的AI平台—…...
视频质量评估技术解析与ClearView系统实践
1. 视频质量评估的行业现状与技术痛点 在数字电视和流媒体爆发式增长的今天,视频质量评估(Video Quality Assessment, VQA)已成为设备制造商和内容提供商的核心竞争力指标。我从事视频处理算法开发已有八年,亲眼见证了这个领域从依…...
ANSYS Maxwell 静电仿真避坑指南:模型设置、求解失败与结果解读的5个常见问题
ANSYS Maxwell 静电仿真避坑指南:模型设置、求解失败与结果解读的5个常见问题 当你第一次成功运行ANSYS Maxwell的静电仿真时,那种成就感是真实的。但很快你会发现,能跑通仿真和得到可信结果之间,隔着无数个深夜调试的坑。这篇文章…...
从零部署私有AI助手:igogpt项目实战与优化指南
1. 项目概述与核心价值最近在折腾AI应用部署的时候,发现了一个挺有意思的项目,叫igolaizola/igogpt。乍一看这个名字,可能会有点摸不着头脑,但如果你对开源AI模型部署和WebUI界面搭建感兴趣,那这个项目绝对值得你花时间…...
code-outline:为AI编程助手设计的代码结构导航工具,节省90% Token消耗
1. 项目概述:为AI编程助手打造的代码结构导航仪如果你和我一样,日常开发中重度依赖像Claude Code、Cursor Agent或者Aider这类AI编程助手,那你肯定遇到过这个痛点:想让AI帮你理解一个陌生项目,或者修改一个大型文件里的…...
AI代理协作平台agtx:用终端看板管理多AI编程工作流
1. 项目概述:一个能管理其他AI编程代理的终端看板如果你和我一样,每天要在Claude、Cursor、Codex这些AI编程工具之间来回切换,同时处理多个功能需求,那你肯定也经历过这种混乱:一个终端窗口里,Claude正在写…...
Xplorer文件属性查看器:全面掌控文件信息的终极指南
Xplorer文件属性查看器:全面掌控文件信息的终极指南 【免费下载链接】xplorer Xplorer, a customizable, modern file manager 项目地址: https://gitcode.com/gh_mirrors/xp/xplorer 在日常文件管理中,你是否经常需要快速查看文件的详细信息&…...
AI原生研发不是升级,是重铸:SITS 2026核心议题深度拆解(含7个未公开技术白皮书线索)
更多请点击: https://intelliparadigm.com 第一章:AI原生软件研发:SITS 2026核心议题深度解读 AI原生软件研发正从“AI-augmented”迈向“AI-native”范式跃迁——系统设计、开发流程、运行时契约与交付形态均以大模型为第一性原理重构。SIT…...
《OpenClaw语义采集:让机器第一次真正读懂网页》
传统网页采集的本质困境从未被真正打破,所有基于结构匹配的工具都逃不过网站改版的宿命。开发者耗费数小时精心编写的规则,可能在一次前端更新后彻底失效,而数据清洗的工作量往往占据整个流程的七成以上。OpenClaw的出现彻底重构了这一范式,它将采集的核心从"定位元素…...
HDLbits进阶实战:FSM与移位寄存器在复杂时序电路中的四种设计范式
1. 有限状态机与移位寄存器协同设计基础 在数字电路设计中,有限状态机(FSM)和移位寄存器就像是一对黄金搭档。FSM负责控制流程,而移位寄存器则擅长处理数据流。当它们配合使用时,可以解决许多复杂的时序逻辑问题。 我刚…...
