当前位置: 首页 > news >正文

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控件内的数据

这个功能在项目中很常见&#xff0c;对界面里某个控件的数据进行记录&#xff0c;我这个是每秒记录5次&#xff0c;实际就是每200ms触发一次定时器&#xff0c;来满足需求。 .h文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QtSerialPort> …...

daos源码编译

1. 前言 本文详细介绍如何在almalinux8.9上编译daos.2.0.0源码。系统环境如下&#xff1a; daos: 2.0.0 linux os: almalinux 8.9 linux kernel: 4.18.0-513.5.1.el8_9.x86_64之所以选择2.0.0版本&#xff0c;是因为daos从2.0.0开始是一个全新的架构设计&a…...

HTML飞舞的爱心

目录 系列文章 写在前面 完整代码 代码分析 写在后面 系列文章 序号目录1HTML满屏跳动的爱心&#xff08;可写字&#xff09;2HTML五彩缤纷的爱心3HTML满屏漂浮爱心4HTML情人节快乐5HTML蓝色爱心射线6HTML跳动的爱心&#xff08;简易版&#xff09;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

因为项目需要做评论功能&#xff0c;领导要求使用mongodb&#xff0c;所以趁机多学习一下。 在服务器我们使用docker安装mongodb 1、拉取mongodb镜像 docker pull mongo &#xff08;默认拉取最新的镜像&#xff09; 如果你想指定版本可以这样 docker pull mongo:4.4&#…...

Android11修改摄像头前后置方法,触觉智能RK3568开发板演示

本文介绍在Android11系统下&#xff0c;修改摄像头前后置属性的方法。使用触觉智能EVB3568鸿蒙开发板演示&#xff0c;搭载瑞芯微RK3568&#xff0c;四核A55处理器&#xff0c;主频2.0Ghz&#xff0c;1T算力NPU&#xff1b;支持OpenHarmony5.0及Linux、Android等操作系统&#…...

leetcode 212. 单词搜索 II

给定一个 m x n 二维字符网格 board 和一个单词&#xff08;字符串&#xff09;列表 words&#xff0c; 返回所有二维网格上的单词 。 单词必须按照字母顺序&#xff0c;通过 相邻的单元格 内的字母构成&#xff0c;其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一…...

Taro 鸿蒙技术内幕系列(三) - 多语言场景下的通用事件系统设计

基于 Taro 打造的京东鸿蒙 APP 已跟随鸿蒙 Next 系统公测&#xff0c;本系列文章将深入解析 Taro 如何实现使用 React 开发高性能鸿蒙应用的技术内幕 背景 在鸿蒙生态系统中&#xff0c;虽然原生应用通常基于 ArkTS 实现&#xff0c;但在实际研发过程中发现&#xff0c;使用 C…...

《Docker Registry(镜像仓库)详解》

一、引言 在容器化技术日益普及的今天&#xff0c;Docker 已成为众多开发者和企业的首选工具。而 Docker Registry&#xff08;镜像仓库&#xff09;作为 Docker 生态系统中的重要组成部分&#xff0c;负责存储和分发 Docker 镜像。本文将深入探讨 Docker Registry 的概念、功能…...

AI前景分析展望——GPTo1 SoraAI

引言 人工智能&#xff08;AI&#xff09;领域的飞速发展已不仅仅局限于学术研究&#xff0c;它已渗透到各个行业&#xff0c;影响着从生产制造到创意产业的方方面面。在这场技术革新的浪潮中&#xff0c;一些领先的AI模型&#xff0c;像Sora和OpenAI的O1&#xff0c;凭借其强大…...

用过才敢说 AI论文平台测评:2026年最值得尝试的几款工具

2026年真正好用的AI论文平台&#xff0c;核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测&#xff0c;千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队&#xff0c;覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…...

带标注的交通工具分类数据集,17334张原始图片,识别率92.4%,可识别汽车,公共汽车,自行车,摩托车,支持yolo,coco json,pascal voc xml格式

带标注的交通工具分类数据集&#xff0c;17334张原始图片&#xff0c;识别率92.4%&#xff0c;可识别汽车&#xff0c;公共汽车&#xff0c;自行车&#xff0c;摩托车&#xff0c;支持yolo&#xff0c;coco json&#xff0c;pascal voc xml格式 模型训练指标参数&#xff1a; …...

从松到深:解析组合导航三大模式的演进路径与实战选型

1. 组合导航的底层逻辑与技术演进 第一次接触组合导航系统时&#xff0c;我被这个看似简单的概念惊艳到了——把两种完全不同的定位技术融合在一起&#xff0c;竟然能产生11>2的效果。这就像做菜时的黄金搭档&#xff0c;比如西红柿和鸡蛋单独吃都不错&#xff0c;但炒在一起…...

GPIO的输出输入方式总结

GPIO的四种输入方式GPIO的四种输出方式...

staticFunctional:嵌入式零堆内存的std::function替代方案

1. staticFunctional&#xff1a;嵌入式系统中零动态内存开销的 std::function 替代方案1.1 设计动因与工程痛点在资源受限的嵌入式系统&#xff08;如 ARM Cortex-M0/M4、AVR、ESP32、Teensy 系列&#xff09;中&#xff0c;std::function的标准实现存在根本性兼容障碍。其典型…...

别再只调参了!深入RepVgg设计思想,用CCFF模块优化你的模型特征融合效率

深入解析CCFF模块&#xff1a;用RepVgg思想重构跨尺度特征融合技术 在计算机视觉领域&#xff0c;特征融合一直是提升模型性能的关键环节。传统方法如FPN、PANet虽然有效&#xff0c;但在实时性要求高的场景下往往成为计算瓶颈。今天我们要探讨的CCFF&#xff08;Cross-scale C…...

AI辅助开发中的Codec VAD优化实践:从算法原理到工程落地

在实时音视频应用里&#xff0c;语音活动检测&#xff08;VAD&#xff09;就像个“守门员”&#xff0c;负责精准判断当前有没有人在说话。这个判断准不准、快不快&#xff0c;直接关系到后续的编码、传输乃至降噪、唤醒等一系列流程的效率。尤其在AI辅助开发的框架下&#xff…...

2026最新Java金三银四面试参考指南公开!

想必有很多小伙伴这会已经在为金三银四面试跳槽做准备了。临近面试肯定是要想办法提升自己的面试能力&#xff0c;这个时候如果还去一昧地提升自己的代码能力对面试是毫无帮助的。大多数人在面试的时候都会遇到以下几种情况&#xff08;大家可以看看自己中了几个&#xff09;&a…...

从零开始:OCAT图形化配置工具让OpenCore黑苹果安装变得简单

从零开始&#xff1a;OCAT图形化配置工具让OpenCore黑苹果安装变得简单 【免费下载链接】OCAuxiliaryTools Cross-platform GUI management tools for OpenCore&#xff08;OCAT&#xff09; 项目地址: https://gitcode.com/gh_mirrors/oc/OCAuxiliaryTools 还在为复杂的…...

OpenClaw备份恢复指南:ollama-QwQ-32B模型与技能迁移方案

OpenClaw备份恢复指南&#xff1a;ollama-QwQ-32B模型与技能迁移方案 1. 为什么需要备份恢复方案 上周我的主力开发机突然硬盘故障&#xff0c;导致整个OpenClaw环境丢失。最痛苦的不是重装软件&#xff0c;而是那些精心调教过的技能配置和任务历史记录全部归零。这次经历让我…...