【pytest】测试数据存储在 Excel 或 TXT 文件中,如何参数化

如果测试数据存储在 Excel 或 TXT 文件中,你可以使用外部库来读取这些数据,并将其转化为参数化测试所需的格式。下面我将分别展示如何从这两种文件中读取数据,并用于参数化测试。

从 Excel 文件中读取测试数据

你可以使用 pandas 库来读取 Excel 文件中的数据。首先,确保你已经安装了 pandasopenpyxl(用于读取 .xlsx 文件)或 xlrd(用于读取 .xls 文件)。

pip install pandas openpyxl

然后,你可以编写代码来读取 Excel 文件中的数据,并将其转换为参数化测试所需的格式。

import pandas as pd
import pytest
from user_processor import process_user_input# 读取 Excel 文件中的数据
def read_excel_data(file_path):df = pd.read_excel(file_path)test_data = list(zip(df['input_string'], df['expected_result']))return test_data# Excel 文件路径
excel_file_path = 'test_data.xlsx'# 读取测试数据
test_data = read_excel_data(excel_file_path)# 使用参数化装饰器
@pytest.mark.parametrize("input_string, expected_result", test_data)
def test_process_user_input(input_string, expected_result):# ... 测试逻辑与之前相同 ...

在 Excel 文件中,你需要有两列,一列是 input_string(输入字符串),另一列是 expected_result(期望结果或异常类型)。

从 TXT 文件中读取测试数据

如果你的数据存储在 TXT 文件中,并且每行包含输入字符串和期望结果(可能是以某种分隔符分隔的),你可以使用 Python 的内置文件操作函数来读取这些数据。

import pytest
from user_processor import process_user_input# 读取 TXT 文件中的数据
def read_txt_data(file_path, delimiter=','):test_data = []with open(file_path, 'r') as file:for line in file:parts = line.strip().split(delimiter)input_string = parts[0]expected_result_str = parts[1]# 如果期望结果是异常类型,需要特殊处理if expected_result_str.startswith('ValueError'):expected_result = pytest.raises(ValueError)else:expected_result = expected_result_strtest_data.append((input_string, expected_result))return test_data# TXT 文件路径
txt_file_path = 'test_data.txt'# 读取测试数据
test_data = read_txt_data(txt_file_path)# 使用参数化装饰器
@pytest.mark.parametrize("input_string, expected_result", test_data)
def test_process_user_input(input_string, expected_result):# ... 测试逻辑与之前相同 ...

在 TXT 文件中,每行应该包含两个由某个分隔符(例如逗号)分隔的值:输入字符串和期望结果(或异常类型)。如果期望结果是异常类型,你可能需要在文件中以某种方式标记它(例如,在值前加上 ValueError),以便在读取时能够识别并转换为正确的异常类型。

记住,这些只是从文件中读取数据的基本示例。根据你的具体需求,你可能需要调整文件读取逻辑以适应你的文件格式和内容。

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

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

相关文章

SAMRTFORMS 转换PDF 发送邮件

最终成果: *&---------------------------------------------------------------------**& Report ZLC_FIND_EXIT*&---------------------------------------------------------------------**&根据T-CODE / 程序名查询出口、BADI增强*&-------…

2024年大广赛联通沃派命题解析:赛题内容一览

2024大广赛又又又又又出新命题了,它就是助力青少年积极向上,乐观自信,探享多彩人生的5G时代潮牌——联通沃派,让我们来看看命题详情吧! 联联通沃派是中国联通面向青少年群体推出的客户品牌,契合目标群体特…

基于SSM框架的校园失物招领系统:从设计思路到实现细节

末尾获取源码作者介绍:大家好,我是墨韵,本人4年开发经验,专注定制项目开发 更多项目:CSDN主页YAML墨韵 学如逆水行舟,不进则退。学习如赶路,不能慢一步。 目录 一、项目简介 二、开发技术与环…

安全算法 - 加密算法

加密算法是一种在信息安全领域中广泛应用的算法,能够将数据进行加密转换,以保证数据的保密性和安全性。 它具有保密性、对称加密和非对称加密、密钥管理、数据完整性和认证等重要特点和应用。 加密算法可以分为对称加密和非对称加密两种类型&#xff1…

5.11 Vue配置Element UI框架

Vue配置Element UI框架 目录一、 概要二、 开发前准备1. 搭建Vue框架 三、 安装 Element UI1. 引入 Element UI 依赖2. 在 mian.js 中引入 Element UI 和相关样式:3. 按需引入(非必须, 可忽略)4. 简单构建一个主页面 目录 一、 概要 Element UI 是一个基于 Vue.js …

Java的Prim算法知识点(含面试大厂题和源码)

Prim算法是一种用于求解加权无向图的最小生成树问题的贪心算法。最小生成树是指在一个加权无向图中,连接所有顶点的权值最小的树。Prim算法通过逐步增加新的边和顶点来构建最小生成树。以下是Prim算法的一些关键知识点: 1. 算法概述 Prim算法从图中的任…

备考ICA----Istio实验13---使用 Istio Ingress 暴露应用

备考ICA----Istio实验13—使用Istio Ingress TLS暴露应用 1. 环境部署 清理之前实验遗留,并重新部署httpbin服务进行测试 # 清理之前的环境 kubectl delete vs httpbin kubectl delete gw mygateway # 部署httpbin kubectl apply -f istio/samples/httpbin/httpbin.yaml 确认…

C#WPF将变量或自定义数据类绑定到控件实例

本文实例讲解C#WPF将变量或自定义数据类如何绑定到控件。 目录 一、将普通变量绑定到控件实例 方式一 仅使用XAML来创建数据绑定。

c++11 标准模板(STL)本地化库 - std::isgraph(std::locale) 检查字符是否被本地环境分类为图形字符

本地化库 本地环境设施包含字符分类和字符串校对、数值、货币及日期/时间格式化和分析,以及消息取得的国际化支持。本地环境设置控制流 I/O 、正则表达式库和 C 标准库的其他组件的行为。 检查字符是否被本地环境分类为图形字符 std::isgraph(std::locale) templat…

vue3使用vuedraggable实现拖拽(有过渡)

1. 安装与使用 vue中vuedraggable安装: pnpm i -S vuedraggablenext或者 yarn add vuedraggablenext注意:vue2和vue3安装的是不同版本的vuedraggable,写法上也会有一些区别。 比如在vue3中使用拖拽,要以插槽的方式,…

【微服务】Sentinel(熔断降级,热点限流)

文章目录 1.熔断降级1.基本介绍1.线程堆积引出熔断降级2.示意图3.熔断,降级,限流三者之间的关系 2.熔断降级策略(以分钟为基本单位)1.慢调用比例2.异常比例3.异常数 3.熔断降级实例—慢调用比例1.需求分析2.com/sun/springcloud/c…

个人简历主页搭建系列-05:部署至 Github

前面只是本地成功部署网站,网站运行的时候我们可以通过 localhost: port 进行访问。不过其他人是无法访问我们本机部署的网站的。 接下来通过 Github Pages 服务把网站部署上去,这样大家都可以通过特定域名访问我的网站了! 创建要部署的仓库…

CAS、AQS、ReentrantLock机制以原理

1、CAS 1.1 基本概念 CAS 是 compare and swap 的简写,即比较并交换。它是指一种操作机制,而不是某个具体的类或方法。在 Java 平台上对这种操作进行了包装。在 Unsafe 类中,调用代码如下 这里无法用Unsafe类看,我使用的是Atomi…

绿联 部署vocechat,搭建私人聊天服务器,用于小型团队和家庭环境

1、镜像 privoce/vocechat-server:latest 2、安装 2.1、基础设置 重启策略:容器退出时总是重启容器。 2.2、网络 桥接即可。 2.3、存储空间 装载路径:/home/vocechat-server/data不可变更,权限读写。 2.4、端口设置 容器端口3000不可变…

go实现哈夫曼编码

package main import ( "bytes" "fmt" ) // 定义节点类型 type Node struct { Weight int Left *Node Right *Node } // 构建哈夫曼树 func buildHuffmanTree(weights []int) *Node { var nodes []*Node for _, weig…

鸿蒙OS开发教学:【编程之重器-装饰器】

HarmonyOS 有19种装饰器 必须【2】 绘制一个页面,这两个肯定会用到 EntryComponent 可选【17】 StatePropLinkObjectLinkWatchStylesStoragePropStorageLinkProvideConsumeObservedBuilderBuilderParamLocalStoragePropLocalStorageLinkExtendConcurrent 如果…

Redis--缓存常用的 3 种读写策略

Cache Aside Pattern旁路缓存模式 Cache Aside Pattern 是平时使用较多的一个缓存读写模式,比较适合读请求比较多的场景。 Cache Aside Pattern 中服务端需要同时维系 db 和 cache,并且是以 db 的结果为准。 缓存读写步骤: 写&#xff1a…

python3将exe 转支持库错误 AssertionError: None does not smell like code

exe -> pyc包(*.exe_extracted) 安装反编译工具 exe反编译工具:pyinstxtractor.py下载:https://sourceforge.net/projects/pyinstallerextractor/ python pyinstxtractor.py hello.exe包反编译 懒的写!!! 这有详…

如何使用Zabbix监控MySQL的MGR群集状态

MySQL的MGR(MySQL Group Replication)是MySQL官方提供的一种高可用性和高可靠性的集群解决方案。MGR通过使用基于组复制的方式,实现了多个MySQL实例之间的数据同步和故障转移,从而提供了自动故障恢复和负载均衡的功能。本文将介绍…

安装uim-ui插件不成功,成功解决

安装:这种安装,umi4 不支持,只有umi3才支持。而我发现官网现在默认使用的umi4。 yarn add umijs/preset-ui -D 解决:更改umi版本重新安装umi3 npm i ant-design/pro-cli3.1.0 -g #使用umi3 (指定umi3版本) pro create user-ce…