4.接口自动化测试-读取excel文件3.0

1.优化内容:

当用户需要仅执行测试用例里面指定的某一条或某几条用例运行时
具体方案:(用例筛选)
(1)全部执行
(2)分段执行 用例01-用例07
(3)随机执行某一个 用例03
(4)混和模式[用例01,用例03-用例07,用例09]

"""
函数名:def get_excel_data()
版本:v3.0
函数功能:
(1)获取请求的body与预期的响应结果
(2)可以自定义获取对应的列数据
(3)需要获取测试用例里面指定的某几条用例运行
具体方案:(用例筛选)(1)全部执行(2)分段执行 用例01-用例07(3)随机执行某一个 用例03(4)混和模式[用例01,用例03-用例07,用例09]
框架层Pytest只能定制化执行接口层-跑某一个接口,或不跑 某一个接口
但是:具体的测试用例的挑选,框架做不了
pytest框架:靠一个数据驱动的装饰器执行 @pytest.mark.paramzied(excel挑选出来的用例)"""
# --------------- v3.0 --------------
import xlrd# 可变数量参数*args(可以传多个参数),元组形式
#selectCase=['all'],如果不指定,就默认全部执行
#caseName参数:用例编号
def get_excel_data(excelDir, sheetName, caseName,*colName,selectCase=['all']):resList=[]# formatting_info 保持原样式workBook = xlrd.open_workbook(excelDir, formatting_info=True)workSheet = workBook.sheet_names()  # 获取所有表名# 获取具体的表(模块)workSheet = workBook.sheet_by_name(sheetName)"""函数调用者使用列名:标题,url代码真正操作:使用列的编号思路转化:把函数调用者输入的列名转为列编号"""
# --------------指定列名----------------------colIdxList = []#函数调用者输入列名,转化后的列编号-用列表存放for i in colName:#遍历用户输入的列名colName是元组num=workSheet.row_values(0).index(i)#取出第0行,然后按值求下边(列表求下标)colIdxList.append(num)print('列编号--',colIdxList)# ————————————————————————————————————"""函数调用者指定某一条或某一段用例编号"""# ---------------挑选用例执行---------------------selectList=[]if 'all' in selectCase:#全部执行,一整列数据col_values(0)selectList=workSheet.col_values(0)else:# 1.某一个  2.某一段for one in selectCase:if '-' in one:#是-,代表执行一段.需要切割['03-06]start,end=one.split('-')# 03 06for i in range(int(start),int(end)+1):#3,7# {i:>03}保证3位,不够补0.# 拼接用例编号-接口名+编号==Login3---Login003selectList.append(caseName+f'{i:0>3}')else:selectList.append(caseName+f'{one:0>3}')
# ————————————————————————————————————# 获取数idx = 0 #代表行号初始值for one in workSheet.col_values(0):#获取第0列数据if caseName in one and one in selectList:# 条件满足,则需要这以后数据中的对应列getColData = []# 存放一行中对应的多列数据for colIdx in colIdxList:#遍历列名转化后的列编号,拿到所有需要的列(colIdx)res = workSheet.cell_value(idx,colIdx)#读取某一个单元格数据getColData.append((res))resList.append(getColData)idx+=1return  resListif __name__ == '__main__':configData=['用例编号','标题','url']#代码的装包和解包#*configData--将元组、列表解成单个元素res=get_excel_data('../data/Delivery.xls', '登录模块','Login',*configData,selectCase=['001','003-004'])print(res)for one in res:print(one)
"""
测试反馈:
1.如果是普通字符串-不需要转化
2.如果是json字符串-需要转为字典,因为后续接口需要子弟啊格式
建议:需要转化json字符串的形式
"""

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

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

相关文章

D435i发布的话题学习

参考自https://blog.csdn.net/sinat_16643223/article/details/136406602?spm1001.2014.3001.5502 这里整理一下D435i庞大的topic话题数据。 根据算法来说的话,vins-fusion需要双目灰度图像的话题: camera/infra1/image_rect_raw 和camera/infra2/image…

菜鸟笔记-Numpy函数-random.rand/random.standard_normal/random.normal/random.uniform

random.rand函数 numpy.random.rand 是 NumPy 库中的一个函数,用于从均匀分布中生成随机浮点数。这些浮点数位于半开区间 [0.0, 1.0),也就是说它们包括 0.0 但不包括 1.0。 1函数示例 numpy.random.rand(d0, d1, ..., dn) 参数 d0, d1, ..., dn&…

Redis从入门到精通(九)Redis实战(六)基于Redis队列实现异步秒杀下单

文章目录 前言4.5 分布式锁-Redisson4.5.4 Redission锁重试4.5.5 WatchDog机制4.5.5 MutiLock原理 4.6 秒杀优化4.6.1 优化方案4.6.2 完成秒杀优化 4.7 Redis消息队列4.7.1 基于List实现消息队列4.7.2 基于PubSub的消息队列4.7.3 基于Stream的消息队列4.7.4 基于Stream的消息队…

Golang单元测试和压力测试

一.单元测试 1.1 go test工具 go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程类似,并不需要学习新的语法,规则和工具。 go test命令是一个按照一定约定和组织的测试代码的驱动程序。在包目录内,所有以_test.go为后缀名的…

零代码编程:用kimichat打造一个最简单的window程序

用kimichat可以非常方便的自动生成程序代码,有些小程序可能会频繁使用,如果每次都在vscode中执行就会很麻烦。常用的Python代码,可以直接做成一个window程序,点击就可以打开使用,方便很多。 首先,把kimich…

Tokenize Anything via Prompting

SAM的延续,把SAM输出的token序列用来进行分类,分割和一个自然语言的decoder处理,但其实现在多模态的图像的tokenizer也几乎都是用VIT来实现的。一开始认为这篇文章可能是关于tokenize的,tokenize还是很重要的,后来看完…

JVM虚拟机(一)介绍、JVM组成、堆、栈、方法区/元空间、直接内存

目录 一、JVM 介绍1.1 为什么要学 JVM?1.2 JVM 是什么? 二、JVM 组成2.1 程序计数器2.2 Java堆1)JVM 内存结构2)Java 1.7 和 1.8 中堆的区别 2.3 Java虚拟机栈1)虚拟机栈 和 栈帧2)常见面试题 2.4 方法区/元…

搜索二维矩阵2 合并两个有序链表

240. 搜索二维矩阵 II - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int i matrix.size() - 1, j 0;while(i > 0 && j < matrix[0].size()){if(matrix[i][j…

Vue中watch与计算属性computed

最近&#xff0c;写vue代码&#xff0c;判断父组件传来的type来作为条件判断&#xff0c;并用v-if v-else来控制页面展示。 起初用watch监听了type&#xff0c;发现值改变了&#xff0c;但是写在data配置项的visible属性书写错误&#xff0c;未实现响应式&#xff0c;如下&…

nodejs常用命令

序号命令名注释1clear 或者 cls 清空界面2ls/dir查看列表(list)3cd 目录名进入到目录中去4cd ..返回上一级目录5 cd \直接回到根目录 6CtrlC 停止 Node 程序7输入部分文件名后按下 Tab 键补全文件名 或 目录名&#xff0c; 多次tab会进行切换8 ↑ ↓ 上下箭头切换历史输…

基于wsl的Ubuntu20.04上安装桌面环境

在子系统Ubuntu20.04上安装桌面环境 1. 更换软件源 由于Ubuntu默认的软件源在国外&#xff0c;有时候后可能会造成下载软件卡顿&#xff0c;这里我们更换为国内的阿里云源&#xff0c;其他国内源亦可。 双击打开Ubuntu20.04 LTS图标&#xff0c;在命令行中输入 # 备份原来的软…

索尼相机照片清理软件

在使用索尼相机拍摄照片的时候有时我们需要同时拍摄JPG格式和RAW格式&#xff0c;这在后期选图的时候给我们带来一些麻烦。我们固然可以选用Br来管理照片&#xff0c;但是现在我们可以有一个更轻量的软件&#xff08;8.8MB&#xff09;来做到一部分功能。 我们将照片从SD卡导出…

docker安装mysql和nacos集群加nginx代理

安装mysql nacos 1、拉取mysql镜像 docker pull mysql:8.0.272、定义挂载目录 在/home/mysql目录下新建两个文件夹&#xff0c;一个叫data另一个叫conf 命令形式&#xff1a; mkdir -p /home/mysql/{data,conf}3、配置my.cnf&#xff08;my.ini&#xff09; vim /home/my…

AI推介-大语言模型LLMs论文速览(arXiv方向):2024.03.31-2024.04.05

文章目录~ 1.AutoWebGLM: Bootstrap And Reinforce A Large Language Model-based Web Navigating Agent2.Training LLMs over Neurally Compressed Text3.Unveiling LLMs: The Evolution of Latent Representations in a Temporal Knowledge Graph4.Visualization-of-Thought …

Java(二)面向对象进阶

目录 面向对象 多态性 向下转型 Object equals() toString() clone() finalize() Static 单例模式 代码块 final 抽象类与抽象方法(或abstract关键字&#xff09; 接口 接口的多态性 接口的默认方法 内部类 成员内部类 局部内部类 枚举类 实现接口的枚举类 …

网络安全流量平台_优缺点分析

FlowShadow&#xff08;流影&#xff09;&#xff0c;Ntm&#xff08;派网&#xff09;&#xff0c;Elastiflow。 Arkimesuricata&#xff0c;QNSMsuricata&#xff0c;Malcolm套件。 Malcolm套件优点&#xff1a;支持文件还原反病毒引擎&#xff08;clamav/yara&#xff09;…

IntelliJ IDEA 2024.1 更新亮点汇总:全面提升开发体验

IntelliJ IDEA 2024.1 更新亮点汇总&#xff1a;全面提升开发体验 文章目录 IntelliJ IDEA 2024.1 更新亮点汇总&#xff1a;全面提升开发体验摘要引言 IntelliJ IDEA 2024.1 的新增功能主要亮点全行代码完成 最终的支持 Java 22 功能新航站楼 贝塔编辑器中的粘滞线 人工智能助…

【SpringBoot3】SpringBoot入门

需求&#xff1a;使用 SpringBoot 开发一个web应用&#xff0c;浏览器发起请求 /hello后&#xff0c;给浏览器返回字符串 “hello world "。 步骤 ①. 创建Maven工程 ②. 导入spring-boot-stater-web起步依赖 <dependency> <groupId>org.springframework…

React18从入门到实战

文章目录 一、React环境的搭建二、项目文件的介绍&#xff08;1&#xff09;package.json&#xff0c;他是项目存放依赖包的地方&#xff0c;里面包括了一些项目核心包及下载的其他插件包&#xff08;2&#xff09;src文件夹是项目源码目录&#xff0c;平时开发页面就在其中&am…

linux 用户组与附加组

用户和用户组 查看用户 cat /etc/passwdroot:x:0:0:root:/root:/bin/bash用户名&#xff08;例如 root&#xff09; 密码占位符&#xff08;通常是 x&#xff0c;表示密码存储在 /etc/shadow 文件中&#xff09; 用户 ID&#xff08;UID&#xff09; 组 ID&#xff08;GID&am…