Python 自动化测试(四):数据驱动

news2025/1/20 18:36:11

在实际的测试工作中,通常需要对多组不同的输入数据,进行同样的测试操作步骤,以验证我们的软件质量。这种测试,在功能测试中非常耗费人力物力,但是在自动化中,却比较好实现,只要实现了测试操作步骤,然后将多组测试数据以数据驱动的形式注入,就可以实现了。

前面文章学习了参数化,当数据量非常大的时候,我们可以将数据存放到外部文件中,使用的时候将文件中的数据读取出来,方便测试数据的管理。数据与测试用例分别管理,可以利用外部数据源 YAML、JSON、Excel、CSV 管理测试数据。

pytest 结合 YAML

YAML 是一种容易阅读、适合表示程序语言的数据结构、可用于不同程序间交换数据、丰富的表达能力和可扩展性、易于使用的语言。通过缩进或符号来表示数据类型。

pyyaml 模块在 Python 中用于处理 YAML 格式数据,主要使用 yaml.safe_dump() 和 yaml.safe_load() 函数将 Python 值和 YAML 格式数据相互转换。工作中常常使用 YAML 格式的文件存储测试数据。

安装

pip install PyYAML

案例

创建用例文件以及数据文件来完成数据驱动的测试案例,创建一个文件夹 testdata,在这个文件夹下创建 data.yml 和 test_yaml.py 文件。

创建 data.yml 文件:

-
  - 1
  - 2
-
  - 20
  - 30

创建“test_yaml.py”,代码如下:

import pytest
import yaml

@pytest.mark.parametrize("a,b", yaml.safe_load(open("datas.yml",\
encoding='utf-8')))
def test_foo(a,b):
    print(f"a + b = {a + b}")

代码分析

yaml 文件里定义了列表数据,通过 open() 方法获取 data.yml 文件对象,使用 yaml.safe_load() 加载这个文件对象,将 YAML 格式文件转换为 Python 值,分别传到到用例中生成多条用例分别执行。

运行结果

省略...
test_params.py::test_foo[1-2] 
test_params.py::test_foo[20-30] 
省略...

运行结果中 [1-2] 和 [20-30] 代码传入的两组参数,分别传入 test_foo() 用例方法中执行,并且分别生成两条测试结果。

以上,pytest 组合 YAML 实现数据驱动,YAML 文件作为用例数据源,控制测试用例的执行,使测试用例数据维护更加方便快捷。

 

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

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

相关文章

前端基础_fillStyle和strokeStyle属性

fillStyle和strokeStyle属性 在前面的章节,在绘制图形时只用到默认的线条和填充样式。而在本节中将会探讨canvas全部的可选项,来绘制出更加吸引人的内容。如果想要给图形上色,有两个重要的属性可以做到:fillStyle和strokeStyle。…

社科院与杜兰大学金融管理硕士12门课程简介,其中有你心心念念的课程吗

当我们考量一个项目是否符合自身时,首先对课程设置是有要求的,课程设置是一个项目的灵魂所在,优质的课程与强大的师资更能体现项目的与众不同,下面一起去了解社科院与杜兰大学金融管理硕士项目12门必修课程概要,看看其…

【Java】java | maven | nexus私服 | maven私服 | docker安装nexus私服

一、说明 1、centos 7 2、docker 3、idea的maven项目 二、安装 1、拉取镜像 docker pull sonatype/nexus3:latest 2、创建映射目录并授权 mkdir /home/nexus/nexus-data && chown -R 200 /home/nexus/nexus-data 3、启动镜像 docker run -d -p 8081:8081 -p 8082:8082…

antd+vue——实现按钮始终固定在顶部,且根据权限的不同控制按钮组件的显示与隐藏——技能提升

最近在写后台管理系统,遇到一个小功能,就是一个按钮组件集合。 之前写过一篇文章,是关于按钮集合固定到页面顶部的文章。vue——实现页面滚动时,dom固定在顶部——基础积累 原理就是:监听页面的滚动,如果…

QT Qmake OpenGL osg笔记

文章目录概述QT修改样式qmake概述库引用和库路径指定QT创建动态库和使用小例子写动态库用动态库参考资料附录概述 需要先安装osg,然后再编译安装osgQOpenGL的插件。 其中,osgQOpenGL是OSG嵌入到qt中的一种实现方式,换言之,能够支…

AMBA、AHB、APB、AXI总线介绍及对比

link 一、AMBA概述AMBA (Advanced Microcontroller Bus Architecture) 高级微处理器总线架构定义了高性能嵌入式微控制器的通信标准,可以将RISC处理器(精简指令集处理器)集成在其他IP芯核和外设中,它是有效连接IP核的“数字胶”&a…

或许是市面上最强的 Mock 工具

背景 在开发过程中,由于后端与前端并行开发,或者前端需要等待后台开发,难以保证对接效率,同时即使用开发好的 API 对接,也有可能一个 API 不通就阻塞了整个软件的对接工作。同时对软件的敏感度也很高,一不…

冯·诺依曼:计算机硬件与软件Computer

计算机硬件与软件 计算机(Computer):俗称电脑,是一种能接收和存储信息,并按照存储在其内部的程序对海量数据进行自动、高速地处理,然后把处理结果输出的现代化智能电子设备 冯诺依曼体系结构: …

cubeIDE开发, STM32移植GuiLite图形库开发要点

一、GuiLite GuiLite图形库,仅4千行C代码,0依赖,单一头文件库(GuiLite.h)的跨平台开源GUI库,支持支持的操作系统有iOS/macOS/WatchOS,Android,Linux(ARM/x86-64&a…

Filter过滤器 | 过滤器的使用以及实现原理、责任链设计模式改造oa项目

目录 一:过滤器的使用以及实现原理 (1)当前的oa项目还存在什么缺陷? (2)Filter是什么,有什么用,执行原理是什么? (3)过滤器怎么写&#xff1f…

蓝桥杯:作物杂交 (DFS)

目录 题目描述 输入描述 输出描述 输入输出样例 输入 输出 样例说明 思路(DFS): AC代码(Java): 题目链接 题目描述 作物杂交是作物栽培中重要的一步。已知有 N种作物 (编号 1 至 N ),第…

[第十二届蓝桥杯/java/算法]B——空间

🧑‍🎓个人介绍:大二软件生,现学JAVA、Linux、MySQL、算法 💻博客主页:渡过晚枫渡过晚枫 👓系列专栏:[编程神域 C语言],[java/初学者],[蓝桥杯] &#x1f4d6…

python爬虫技术如何挣钱?教你爬虫月入三万!

前言 爬虫技术挣钱方法1:接外包爬虫项目 这是网络爬虫最通常的的挣钱方式,通过外包网站,熟人关系接一个个中小规模的爬虫项目,一般向甲方提供数据抓取,数据结构化,数据清洗等服务。 各位新入行的猿人看官大多都会先尝…

SpringBoot中的Aop用法

目录什么是AopAop概述相关注解相关概念实例1PointCut 表达式详解executionwithinthistargetargs:annotation:args:逻辑运算符实例2环绕通知什么是Aop 主要介绍springboot中aop的使用,用过Spring框架的都知道,aop是spring框架的两大核心功能之一&#xf…

「实操」适配 NebulaGraph 新版本与压测实践

本文来自邦盛科技-知识图谱团队-繁凡,本文以 NebulaGraph v3.1.0 为例。 前言 NebulaGraph v3.1 版本已经发布有一段时间了,但是我们的项目之前是基于 v2.6.1 版本开发的,由于一直在做功能相关的工作,所以一直没有对图库进行升级…

一个简单的步骤让你的 Python 代码更干净

说起来容易做起来难,我们都知道代码可读性非常重要,但是写的时候总是随心所欲,不考虑类型提示、import 排序、PEP8 规范。今天分享一个小技巧,通过一个简单的步骤就可以让你的 Python 代码更干净。 这就是 pre-commit&#xff1a…

pyQt5和pySide2 环境配置以及部分问题解决方案

首先介绍需要安装的内容: 1、Qt 2、python3.7.5(查找资料过程中有注意到说是3.8及3.8以上版本Qt可能不兼容)【记得勾选添加到环境变量中选项】 3、pip(主要用来下载使用) 4、pySide2、PyQt5、pyqt5-tools 5、如果有使…

vue 前端国际化方案

方案介绍: 1.使用i18n(使用步骤可百度,要注意版本问题) 2.整合ele-ui的国际化方案(百度,几行添加一下即可) 3.数据信息的配置(重头戏,以下详细介绍)excel转j…

中科院高分区盘点:1区新刊,影响因子即将突破7分(含IEEE)

高分新刊——计算机领域 1区人工智能类SCI&EI 【出版社】IEEE 【自引率】4.30%(低) 【国人占比】13.40% 【期刊简介】IF:6.5-7.0,JCR1区,中科院3区 【检索情况】SCI&EI 双检,正刊 【参考周期】3-5个月左…

Hierarchical Fusion Model (2019 ACL)三种模态的层次融合

论文题目(Title):Multi-Modal Sarcasm Detection in Twitter with Hierarchical Fusion Model 研究问题(Question):主要研究了推特中由文本和图像组成的推文的多模态讽刺检测 研究动机(Motiva…