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

使用python快速搭建接口自动化测试脚本实战总结

导读

本文将介绍如何使用python快速进行http/https接口自动化测试脚本搭建,实现自动请求、获取结果、数据对比分析,导出结果到Excel等功能,包括python的requests、pandas、openpyxl等库的基本使用方法。

测试需求介绍

通常,在我们的项目中,我们的接口测试需求一般都是构造不同的请求数据,然后发送请求到接口,拿到接口返回后,对返回的字段进行提取和校验,最后将结果存放在excel表格中方便查阅。接口一般是http或https请求,发送的结构一般是json body或json结合一些文件附件,请求的返回结果都是json格式,我们的测试case可以用Excel或者数据库保存,结果可以保存在数据库或者直接存在Excel中,下面将具体拆解需求及逐步介绍实现过程。

请求体的定制和发送请求

构造每次发送的请求内容和向接口自动发送请求是构造自动化测试脚本的核心,我们实现这一步骤主要是使用python 的requests库,下面详细做一下详细介绍。

01

发送简单的http post请求

发送请求前,我们需要明确请求的body,我们的body为json,具体内容如下:

我们可以把这个作为模板保存为text.json文件作为模板,这样可以直接读取为后面构造请求体做准备。这一步我们可以这样处理,这里借助了yaml包,可以把json转换为字典,也可以使用python自带的json,效果一样。

获取到了请求体模板后,我们得到了变量request_body,这是一个字典类型的数据,我们就可以对其进行参数化,以此构造我们需要的请求体了,例如我们要对每次请求的请求id、用户名、以及text的内容做修改,可以这样操作,左边是需要修改的字段,右边是我们需要的变量。

构造好要发送的数据,就可以准备发送请求了,在发送请求之前我们还有一点工作要做,那就是设置请求接口的一些参数和一些请求头的定制,这里我们简单举例如下:

我们定制了请求参数和请求头,就可以发送类似如下URL的请求:

我们再把之前构造好的body加上,再用requests库的post方法发送请求,这里用到了方法中的data参数,它接收的是一个json,因此在发送之前对之前的字典变量还需做下转换再发送,这里用python自带的json库,使用其中的dumps方法即可将字典转换为json:

至此,一个基本的http post请求就发送完成了,注意到,我们有一个名为 r 的 Response 对象。我们可以从这个对象中获取所有我们想要的信息。

02

更加复杂的请求

前面我们介绍了最简单的http post请求,在此基础上,我们有时还需要一些更加复杂的请求,比如带一个文件,https请求等,下面简单讲解一下如何实现:

比如我们想要发送一个带有格式为pcm的音频文件到接口中,并且接口是https的

注意到,发送https请求需要做ssl认证,在方法中使用verify参数,这个参数默认值是True,一般不需要验证的话,需要将这个置为False。还有一个需要注意的地方是,我们设置了一个timeout,防止请求过程超时,导致程序无响应。

对请求返回数据进行关键数据抓取

在发送请求的步骤里我们有一个名为 r 的 Response 对象。我们可以从这个对象中获取所有我们想要的信息。

获取内容有如下几种方法,我们可以根据自己的需要来使用:

得到的一般为json格式的文本:

我们可以对json进行转换,使用json.loads方法,将一个json对象转换为python的字典,这样方便获取其中我们想要的一些字段,这一步很简单,就不做详细介绍了。

如何执行case和存储测试结果

首先我们看一下我们的case,我们的case是使用Excel进行编写的,具体如下:

如何读取Excel,获取其中的case呢?我们使用了python中的pandas库。这个库很强大,有很多处理数据的方法,我们在这只使用其中读取excel的方法,具体代码如下:

这样我们就将表格数据转换了一个list,每个list中是一个字典格式,也就是我们的case,具体格式如下:

这样做的目的是我们可以将表头和每个case做一个映射,形成一个字典,这样可以更加灵活操作case以及做数据对比。

有了case list,加上之前我们发送请求和获取结果的步骤就可以进行批量接口测试了,这里使用一个for循环就可以批量跑起来了:

我们将每次返回的结果,按照case的格式拼接成一个字典,就是我们的结果数据,将每个结果字典再存储到一个列表中,就得到了整个的结果字典列表,我们将它命名为case_result_list,这时,我们再次使用pandas库,可以把这个列表转换为dataframe格式:

之后我们将dataframe保存为excel文件:

至此,我们已经完成了从获取case到发请求获取结果,保存结果的全部流程。

对结果数据进行标识处理

经过以上的操作,我们已经完成了批量发请求,获取结果的过程,如果我们需要对结果单元格做一些处理,比如标红加粗等操作,使测试结果中的错误信息更加明显,需要怎么操作呢?这里我们使用了python中的openpyxl库。这个库也是可以对Excel表格进行读写操作,并且可以插入一些公式和样式。我们在这里使用的是样式操作,我们根据单元格中的数据对结果进行标红加粗操作:

最后得到的测试结果如下,通过使用openpyxl,我们还可以在结果中追加行,增加一些测试结果的统计信息,如case数、error数,错误率正确率等。

以上就是一次完整的接口自动化测试脚本搭建,实现自动请求、获取结果、数据对比分析,导出结果到Excel等功能,每一个步骤都比较简单,可以快速搭建出满足需求的自动化测试脚本,方面快速验证服务端接口。

其中使用的requests库、pandas库是在python常用的库,功能很强大,后续大家可以参考其官方文档进行深入了解。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

相关文章:

使用python快速搭建接口自动化测试脚本实战总结

导读 本文将介绍如何使用python快速进行http/https接口自动化测试脚本搭建,实现自动请求、获取结果、数据对比分析,导出结果到Excel等功能,包括python的requests、pandas、openpyxl等库的基本使用方法。 测试需求介绍 通常,在我…...

android studio 字节码查看工具jclasslib bytecode viewer

jclasslib bytecode viewer 是一款非常好用的.class文件查看工具; jclasslib bytecode editor is a tool that visualizes all aspects of compiled Java class files and the contained bytecode. Many aspects of class files can be edited in the UI. In addit…...

Ubuntu上搭建FTP服务

要在Ubuntu上搭建FTP服务器,可以使用常见的FTP服务器软件如vsftpd(Very Secure FTP Daemon)或ProFTPD。以下是使用vsftpd在Ubuntu上设置FTP服务器的基本步骤: 步骤 1: 安装 vsftpd 打开终端并运行以下命令安装 vsftpd&#xff1a…...

unity打AB包,AssetBundle预制体与图集(三)

警告: spriteatlasmanager.atlasrequested wasn’t listened to while 条件一:图片打图集里面去了 条件二:然后图集打成AB包了 条件三:UI预制体也打到AB包里面去了 步骤一:先加载了图集 步骤二:再加载UI预…...

在Javascript中为什么 0.1+0.2 不等于0.3 ? 源代码详细解析

在JavaScript中,浮点数计算可能会导致精度问题,这就是为什么0.1 0.2不等于0.3的原因。这是因为JavaScript使用IEEE 754标准来表示浮点数,而该标准使用二进制来表示小数。 让我们通过一个实例来详细解释这个问题。考虑以下代码: …...

MATLAB|热力日历图

目录 日历图介绍: 热力日历图的特点: 应用场景: 绘图工具箱 属性 (Properties) 构造函数 (Constructor) 公共方法 (Methods) 私有方法 (Private Methods) 使用方法 日历图介绍: 热力日历图是一种数据可视化形式&#xf…...

《golang设计模式》第三部分·行为型模式-05-仲裁者/中介模式(Mediator)

文章目录 1. 概述1.1 作用1.2 角色1.3 类图 2. 代码示例2.1 设计2.2 代码2.3 类图 1. 概述 仲裁者(Mediator)可以封装和协调多个对象之间的耦合交互行为,以减弱这些对象之间的耦合关联。 1.1 作用 将多个对象相互耦合的设计转变为所有对象…...

7天入门python系列之准备工作

寄语 编者打算开一个python 初学主题的系列文章,用于指导想要学习python的同学。关于文章有任何疑问都可以私信作者。对于初学者想在7天内入门Python,这是一个紧凑的学习计划。但并不是不可完成的。 7天的安排 如果你想在7天内入门Python,…...

Go语言~反射

reflect包 type name和type kindValueOf通过反射获取值通过反射设置变量的值 package mainimport ("fmt""reflect" )func reflectType(x interface{}) {obj : reflect.TypeOf(x)fmt.Println(obj, obj.Name(), obj.Kind())fmt.Printf("obj type of %…...

详解交叉验证中【KFold】【Stratified-KFold】【StratifiedShuffleSplit】的区别

交叉验证是一种统计分析方法,它的目的是通过在同一数据集上重复并分割训练和测试数据,来评估机器学习模型的性能。以下是​这三种交叉验证方法的区别: KFold(K-折叠) 在KFold交叉验证中,原始数据集被分为K个…...

数学建模比赛中常用的建模提示词(数模prompt)

以下为数学建模比赛中常用的建模提示词,希望对你有所帮助! 帮我总结一下数学建模有哪些预测类算法? 灰色预测模型级比检验是什么意思? 描述一下BP神经网络算法的建模步骤 对于分类变量与分类变量相关性分析用什么算法 前10年的数据分别是1&a…...

Spark 新特性+核心回顾

Spark 新特性核心 本文来自 B站 黑马程序员 - Spark教程 :原地址 1. 掌握Spark的Shuffle流程 1.1 Spark Shuffle Map和Reduce 在Shuffle过程中,提供数据的称之为Map端(Shuffle Write)接收数据的称之为Reduce端(Sh…...

STM32 TIM定时器,配置,详解(1)

计数器寄存器(TIMx_CNT)、预分频器寄存器(TIMx_PSC)、自动重载寄存器(TIMx_ARR)。 PSC预分频器,顾名思义,先预备一下分频,有时候频率过高,后面的定时器承受不住,就先用PSC先分频一下。如何分频的?将每接受到…...

Helix Toolkit:为.NET开发者带来的3D视觉盛宴

推荐一个基于.Net开源的3、功能强大的3D图形库和工具包,适用于WPF应用程序的3D渲染和开发。 01 项目简介 Helix Toolkit是一个开源的3D库,主要用于WPF应用程序。它有许多优点,例如提供各种各样的功能,包括基于MVVM的3D模型编辑器…...

PHP分类信息网站源码系统 电脑+手机+微信端三合一 带完整前后端部署教程

大家好啊!今天源码小编来给大家分享一款PHP分类信息网站类源码系统。这款源码系统是一套专业的信息发布类网站综合管理系统,适合各类地方信息和行业分类站点建站。随着这几年我们国家网民爆炸式的增 长,网络信息也随之越来越庞大,…...

2023年辽宁省数学建模竞赛B题数据驱动的水下导航适配区分类预测

2023年辽宁省数学建模竞赛 B题 数据驱动的水下导航适配区分类预测 原题再现: “海洋强国”战略部署已成为推动中国现代化建设的重要组成部分,国家对此提出“发展海洋经济,保护海洋生态环境,加快建设海洋强国”的明确要求。   …...

完蛋!百融云被大阳线包围了!

没想到让AI指数爬出底部的,不是离婚的两口子承诺不减持了,而是国产游戏圈神作《完蛋!我被女友包围了》。确实,资本市场不相信眼泪,AI的涨跌也与爱情无关。 之前有一个来自美国和澳大利亚的大数据团队做过一个有趣的统…...

数据结构 编程1年新手视角的平衡二叉树AVL从C与C++实现③

对应地,我们可以将insert函数中省略的操作补上 if(getBalance(node)2){ if(getBalance(node->left)1){ noderightRotate(node); //对应LL型 } else if(getBalance(node->left)-1{ node->left leftRotate(node->left); //对应LR型 noderightRotate(n…...

数据可视化PCA与t-SNE

PCA(主成分分析)和t-SNE(t分布随机近邻嵌入)都是降维技术,可以用于数据的可视化和特征提取。 降维:把数据或特征的维数降低,其基本作用包括: 提高样本密度,以及使基于欧…...

Kubernetes rancher、prometheus、ELK的安装

目录 一、rancher的安装1. 添加 Helm Chart 仓库2. 为 Rancher 创建命名空间3. 选择 SSL 配置4. 安装 cert-manager 二、prometheus安装三、EFK安装3.1安装elasticsearch3.2安装filebeat3.3安装kibana 一、rancher的安装 有关rancher的安装其实官方网站给的步骤已经很详细了&a…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子&#xff08…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文通过代码驱动的方式&#xff0c;系统讲解PyTorch核心概念和实战技巧&#xff0c;涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...

数据结构:递归的种类(Types of Recursion)

目录 尾递归&#xff08;Tail Recursion&#xff09; 什么是 Loop&#xff08;循环&#xff09;&#xff1f; 复杂度分析 头递归&#xff08;Head Recursion&#xff09; 树形递归&#xff08;Tree Recursion&#xff09; 线性递归&#xff08;Linear Recursion&#xff09;…...

篇章二 论坛系统——系统设计

目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...