接口自动化测试实践指导(下):接口自动化测试断言设置思路

article/2025/8/29 11:54:19

在前篇文章:

接口自动化测试实践指导(中):接口测试场景有哪些

中详细给小伙伴们讲解了一下接口自动化需要做哪些准备工作及接口测试场景有哪些。

本篇文章是最后一篇,主要分享一下接口自动化测试断言设置思路

如果没有好的断言,自动化用例效果将大大打折扣,甚至是无用的,前期的很多工作都因此浪费。

这里我继续结合自身经验,帮助大家梳理一下,希望有所帮助和提升。

1 断言设置思路

这里总结了我在项目中常用的 5 种断言方式,基本可能满足 90% 以上的断言场景,具体参见如下脑图:

下面分别解释一下图中的五种思路:

1) 响应码

对于 http 类接口,有时开发人员只是通过设置接口响应码来反应接口是否成功,这时我们的断言就需要检查接口响应码是否符合预期来判断用例是否执行成功。

2) 验证关键字段值

一般接口中会设有专门的字段来反馈接口成功与否的信息。

比如:msg字段,经常好多接口通过该字段反应后台的处理情况,如果成功会返回成功信息,失败会返回失败原因。

这样我们测试时可以直接校验该字段值来判断用例是否执行成功。

3) 正则匹配

当一个接口返回内容比较多时,但有一定规则可寻,我们可以借助正则表达式来校验检查。

4) 数据库匹配核对

要对一个查询类接口的返回数据进行验证,我们可以采用编写 SQL,到数据库查询结果。

然后将数据库结果与接口返回结果进行核对检查,这样就能比较准确的验证接口返回数据的正确性。

5) 相关接口辅助验证

举个例子,比如测试一个删除接口,删除了一条记录后,如何验证接口真的把记录删除成功了?

可以再调用查询接口,检查被删除的记录是否真的查询不到了,那就说明删除真的成功了。

2 断言设置实战演示

基于上面的断言思路,接下来,我通过实际例子给大家做一下展示,这里通过两种平台工具来展示:

一种是开源好用的Jmeter

另一种是之前给大家推荐的eolink平台,eolink平台因为支持自定义脚本,且平台提供了很多内置函数,也可以像Jmeter一样灵活实现上述 5 种断言思路。

下图展示一下eolink平台的自定义脚本功能

更多内置函数可以参考:

https://help.eolink.com/#/tutorial/?groupID=c-806&productID=23

2.1 响应码断言展示

如果一个接口需要通过接口请求的响应码来断言,判断是否达到预期结果,Jmeter工具的实现如下:

说明:

该用例会返回 400 的错误码,断言设置校验响应码是否为 400,如果等于400 表示用例执行成功,否则失败。

再展示一下用eolink的实现效果:

2.2 验证关键字段值

如果一个接口需要通过响应结果中出现某个关键词来判断是否达到预期结果,可以采用验证关键字段值的断言方式,用Jmeter工具实现如下:

说明:

该用例通过检查接口返回字段 msg的值 是否为“您没有登录,请重新登录”来判断用例是否执行成功。

再展示一下用eolink的实现效果:

2.3 正则匹配

如果一个接口返回的响应结果是不断变化的,但结果符合某个预期的规则,这时可以采用正则匹配的方式来断言,用Jmeter工具实现如下:

说明:

通过正则匹配,除了验证某个符合预期规则的字段值,可以用于匹配检查接口返回样式,匹配成功了,说明用例执行通过。

再展示一下用eolink的实现效果:

2.4 数据库匹配核对

针对一个查询类接口,如果想详细验证返回结果的各个字段,可以采用数据库匹配核对方式来断言,用Jmeter工具实现如下:

说明:

对于一个查询类用例,通过查询数据库,然后将接口返回结果与数据库返回结果进行对比,对比成功说明用例执行通过。

再展示一下用eolink的实现效果:

执行结果:

2.5 相关接口辅助验证

很多接口的验证需要依赖其他相关接口来判断,实现起来会稍微复杂些,但断言效果非常好,先用Jmeter工具给大家展示一下:

说明:

对于部署接口是否成功的验证,我这边通过查看部署日志接口来辅助验证。

当部署日志接口中获取到部署成功日志打印后,就说明用例执行通过。

再展示一下用eolink的实现效果:

1)有两种方式,一种步骤中添加相关接口,提取相应内容,后续做判断。

2)再一种就通过 JS 脚本来维护多个接口,并处理接口的响应结果,添加断言来实现。

eolink平台有着非常丰富易用的功能,帮助项目团队更好的对 API 接口进行管理和测试。

最后,再补充介绍一下该平台对于 API 接口测试方面的某系高级功能

1)与 API 文档关联与自动同步

在测试用例中,绑定 API 文档之后,当 API 发生变化时,您可以一键将文档内容同步到测试步骤中,减轻维护用例的成本。

想了解更多,可以参见:

https://help.eolink.com/#/tutorial/?groupID=c-752&productID=23

2)0代码,拖拉拽完成测试流程编排

平台支持拖拉方式进行复杂多接口链路的场景编排,减轻脚本维护工作量。

更多可参见:

https://help.eolink.com/#/tutorial/?groupID=c-751&productID=23

3)对数据库进行操作

平台也支持在自动化用例中添加对数据库的操作,常用于以下场景:

1. 测试前对数据库插入测试数据。

2. 清除脏数据。

3. 查询 API 操作是否对数据库生效。

…更多可参见:

https://help.eolink.com/#/tutorial/?groupID=c-748&productID=23

4)定时自动测试

该平台也支持自动化用例定时执行,减少人为的干预,进一步降低执行成本。

想了解更多,可以参见:

https://help.eolink.com/#/tutorial/?groupID=c-787&productID=23

综合来看,eolink平台功能十分强大,除了能像Jmeter一样灵活实现各类接口场景的自动化测试,还有丰富的 API 管理、API 监控、API 市场功能。

帮助整个研发团队高效实现 API 全流程的管控,可以说是非常强大易用的一款 API 管理测试平台。

至此,接口自动化测试实践指导三篇文章全部完结,希望测试小伙伴们看后能有所收获,后续要多多实践,才能很好提升自动化测试能力。

体验地址:

https://www.eolink.com/?utm_source=w2703


学习资源分享

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

这些资料,对于想【进阶自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….


http://chatgpt.dhexx.cn/article/MqOjdE0q.shtml

相关文章

Apifox接口自动化测试方法

1.新建测试用例 2.输入名称、分组、优先级后点击确定 3.点击测试用例名称或者详情 4.添加步骤,两个方式都可以 5.选择要测试的接口后选择模式,复制/绑定,复制-复制一份数据,和原来的接口相互独立,互不影响&…

接口自动化测试,完整入门篇

1. 什么是接口测试 顾名思义,接口测试是对系统或组件之间的接口进行测试,主要是校验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系。其中接口协议分为HTTP,WebService,Dubbo,Thrift,Socket等类型,测试类型又主…

如何搭建接口自动化测试框架?

为什么要做(自动化)接口测试? 1、由于现在各个系统的复杂度不断上升,导致传统的测试方法成本上升且测试效率大幅下降,而接口测试相对于UI测试更加稳定,且相对容易实现自动化持续集成,可以减少人…

接口自动化测试实践指导(上):接口自动化需要做哪些准备工作

作者:石臻臻, CSDN博客之星Top5、Kafka Contributor 、nacos Contributor、华为云 MVP ,腾讯云TVP, 滴滴Kafka技术专家 、 LogiKM PMC(改名KnowStream)。 LogiKM(改名KnowStreaming) 是滴滴开源的Kafka运维管控平台, 有兴趣一起参与参与开发的同学,但是怕自己能力不…

pytest接口自动化测试框架搭建

文章目录 一. 背景二. 基础环境三. 项目结构四、框架解析4.1 接口数据文件处理4.2 封装测试工具类4.3 测试用例代码编写4.4 测试用例运行生成报告 一. 背景 Pytest目前已经成为Python系自动化测试必学必备的一个框架,网上也有很多的文章讲述相关的知识。最近自己也…

接口自动化测试项目实战

目录 1. 什么是接口测试 2. 基本流程 2.1 示例接口 3. 需求分析 4. 用例设计 5. 脚本开发 5.1 相关lib安装 5.2 接口调用 5.3 结果校验 5.4 执行测试 5.5 发送邮件报告 6. 结果分析 7. 完整脚本 8、总结 1. 什么是接口测试 顾名思义,接口测试是对系统或…

接口自动化测试用例详解

phpunit 接口自动化测试系列 Post接口自动化测试用例 Post方式的接口是上传接口,需要对接口头部进行封装,所以没有办法在浏览器下直接调用,但是可以用Curl命令的-d参数传递接口需要的参数。当然我们还以众筹网的登录接口为例,讲…

接口自动化测试流程

文章目录 接口自动化测试的基本流程一、需求分析二、自动化接口挑选三、设计自动化测试用例四、搭建自动化测试环境五、设计自动化执行框架六、编写代码七、执行用例八、测试报告 接口自动化测试的基本流程 1、需求分析 2、挑选需要做自动化测试的功能接口 3、设计测试用例 4、…

接口自动化测试框架

本文介绍一个接口自动化测试框架。 Pythonunittestrequests 实现结果:读取Excel接口测试用例并执行,输出测试报告。 框架脑图 如图,各个模块及作用如上。 处理数据库 db_funcs用来处理数据库,实现数据库数据的读取操作。&…

基于 python 的接口自动化测试,让你轻松掌握接口自动化

目录 目录 一、简介 ​编辑二、引言 三、环境准备 四、测试接口准备 接口信息 五、编写接口测试 六、优化 封装接口调用 一、简介 本文从一个简单的登录接口测试入手,一步步调整优化接口调用姿势; 然后简单讨论了一下接口测试框架的要点&#xff…

接口自动化测试工程化——了解接口测试

什么是接口测试 接口测试也是一种功能测试 我理解的接口测试,其实也是一种功能测试,只是平时大家说的功能测试更多代指 UI 层面的功能测试,而接口测试更偏向于服务端层面的功能测试。 接口测试的目的 测试左移,尽早介入测试&#…

接口自动化测试【完整版】

1. 什么是接口测试 顾名思义,接口测试是对系统或组件之间的接口进行测试,主要是校验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系。其中接口协议分为HTTP,WebService,Dubbo,Thrift,Socket等类型,测试类型又主…

接口自动化测试

接口自动化测试 1.基础知识1.接口测试原理2.接口测试点及用例设计方法3.接口测试要点4.常见HTTP状态码5.HTTP基础知识6.接口自动化测试工具7.token 2.抓包工具1.chrom抓包2.Fiddler抓包(PC端,手机端)1.原理2.下载安装3.抓取数据信息说明&…

接口自动化测试(Python+Requests+Unittest)

(1)接口自动化测试的意义、前后端分离思想 接口自动化测试的优缺点: 优点: 测试复用性。 维护成本相对UI自动化低一些。 为什么UI自动化维护成本更高? 因为前端页面变化太快,而且UI自动化比较耗时(比如等待页面元素的…

接口自动化测试,一看就会

引言 与UI相比,接口一旦研发完成,通常变更或重构的频率和幅度相对较小。因此做接口自动化的性价比更高,通常运用于迭代版本上线前的回归测试中。 手工做接口测试,测试数据和参数都可以由测试人员手动填写和更新。 因此我们在考…

Pytorch损失函数(nn.L1Loss、nn.SmoothL1Loss、nn.MSELoss 、nn.CrossEntropyLoss、nn.NLLLoss)

文章目录 nn.L1Lossnn.SmoothL1Lossnn.MSELossnn.CrossEntropyLossnn.NLLLoss 损失函数,是编译一个神经网络模型必须的两个参数之一,另一个是优化器。损失函数是指用于计算标签值和预测值之间差异的函数,常见的有多种损失函数可供选择&#x…

链表L->next

2020/10/26更新 #include <iostream> using namespace std;struct MyStruct {int data 0;MyStruct* next; }; int main() {MyStruct* L;MyStruct head ,firstNode;head.data 1;firstNode.data 2;head.next &firstNode;L &head;cout << L->next-&g…

L多样化

为了解决同质性攻击和背景知识攻击所带来的隐私泄露&#xff0c;Machanavajjhala等人提出了L-多样性(l-diversity)模型。简单来说&#xff0c;就是在公开的数据中&#xff0c;每一个等价类里的敏感属性必须具有多样性&#xff0c;即L-多样性保证每一个等价类里&#xff0c;敏感…

L'Hospital法则

1.LHospital法则利用柯西中值定理证明 2.该法则适用f与g同时为无穷小量或g为无穷大量的情况 3.注意该法则只给出了充分不必要条件 今天我们介绍一种函数求极限的方法——LHospital法则。它主要用在求解"待定型"极限 1 首先阐述定理: 我们证明这个定理: 微分中值定理…

李沐老师 d2l库画图在 pycharm 动态显示问题(已解决)

修改 d2l.Animator 类的部分代码 1. 在 Animator 类中的 add() 方法中添加两行代码 plt.draw() plt.pause(0.001) 2. 在 Animator 添加 show() 方法 def show(self):display.display(self.fig) 3. 在需要显示的时候调用 animator.show() 结果