Apifox:API 接口自动化测试完全指南

news2024/11/24 6:56:10

 

01 前言

这是一篇关于 Apifox 的接口自动化测试教程。相信你已经对 Apifox 有所了解:“集 API 文档、API 调试、API Mock、API 自动化测试,更先进的 API 设计/开发/测试工具”。

笔者是后端开发,因此这篇教程关注的是 API 自动化测试,如果你也是后端开发,正苦于没有好的方式测试接口,对保证线上接口稳定性没有信心,那么这篇文章就是为你准备的,如果你学会了 Apifox 接口自动化测试,它几乎是一个会陪伴你整个职业生涯中的一件称心应手的兵器。

接口测试可不是简单的请求一两个接口再检查一下响应结果那么简单,没有贴近业务场景的测试意义不大,但完全模拟业务场景,一比一真实的去还原用户操作流程的测试势必会很复杂,如 接口需要登陆后才能操作怎么办?一个接口依赖上一个接口请求返回的数据怎么办?后端对请求有签名验证怎么办?后端任务是异步处理的怎么办?...

不要担心,既然是完全指南,这些问题我们就都会讲到,Apifox 强大的能力可以解决这些问题,下面我们会用真实的案例,逐步讲解覆盖到这些所有的场景。建议大家打开 autotest.apifox.cn 这个项目,一边学习里面的公共脚本(公共脚本、测试套件等都打包放在 百度网盘),一边跟着练习。

02 接口自动鉴权

知识点:环境变量、公共脚本、pm.sendRequest脚本发送请求

我们通过一个需要登录才能访问的后台新闻列表接口,来演示接口自动登录鉴权。

默认情况下访问该接口提示需要登录:

图片

如果要正常访问该接口的数据,需要在 header 中提供 AdminToken: token 头,这是一个常见的需要 JWT 登录认证接口。

很自然的我们想到,如果自动请求登录接口获取 token 值,然后在每次请求前自动带上这个 AdminToken 头不就行了吗,没错就是这样简单,伪代码如下:

完整的代码见 「公共脚本」admin: login and Auth

图片

这里我们从登录接口获取 token 后,将其缓存到本地的环境变量中,这样就不必每次都请求登录了。

现在我们已经完成了 请求登录接口获取 token,并设置到 请求头中的功能,然后我们再把此 公共脚本 应用到 新闻列表的接口上,实现在 请求新闻列表接口 前自动完成 “登录”。

后台有很多接口访问都需要登录,如果一个个地去设置 前置脚本 就太麻烦了,所以这里我们直接在 admin 后端接口的分组目录上设置 前置操作 公共脚本admin: login and Auth,这样整个 admin 下的全部接口都能自动登录了:

图片

我们来验证一下:

图片

可以看到返回了数据,说明自动登录成功了,我们在 控制台输出 中可以看到请求了登录接口,在实际请求中 可以看到 AdminToken: token 头。

在这个例子中我们是将 用于后台登录的 用户名 和 密码 提前配置到了 环境变量中,然后利用脚本 pm.sendRequest 请求登录接口获取 token,并设置 请求头,这样就实现了接口的自动登录。

关于变量的优先级 和 脚本的执行时机,如图所示:

图片

图片

03 接口自动加签

知识点:参数注入、内置类库

有一些对安全性要求较高的接口可能会有对接口请求进行验签的机制,具体是 接口请求的数据 会额外多一个 sign 字段,它的值是可以是 md5(k1=v1&k2=v2...),这样就确保了请求数据不会被篡改,但是这给我们测试带来了麻烦,我们如何每次自动生成 sign 参数呢,不用担心,这对 Apifox 来说不在话下,利用 Apifox 强大的脚本功能我们甚至能够调用外部任何语言的脚本。

知道了请求加签的原理,那么实现就很容易了,无非是 在请求前 自动算出 sign ,并注入到请求参数中去,下面是伪代码:

完整的代码见 「公共脚本」parkinglot:client: request sign and common params

图片

然后 把 自动加签的公共脚本设置到 client 停车场设备端 📟 分组 的前置脚本中,这样其下所有接口请求时都有 sign 参数了。

注:这里简化了签名算法, md5(k1=v1&k2=v2..., key) 其实签名算法还有一个关键的 key参数 ,不过删减这部分内容并不影响我们这里对接口自动加签的讲解。为了力求简洁,只关注最核心的东西,文章都是使用伪代码的形式,完整代码请读者自行查看项目中的公共脚本。

04 测试用例

知识点:接口用例(顺序)、流程控制(条件、循环、等待)、测试数据、断言

在掌握了 Apifox 的强大脚本能力后,你几乎能够解决任何鉴权、加签等问题了,接下来我们开始搭建完整的测试流程,以便真实完整的模拟正常使用时的业务测试场景。

我假定你已经熟悉 Apifox 中 接口用例、环境变量、变量提取、断言 等基础概念

我们先看一个简单的场景测试:

图片

我们运行测试看一下:

图片

图片

我们在后台看一下新闻分类和新闻确实创建成功了。

再看看一个稍微复杂一点的测试场景,一个异步任务处理的场景测试:

图片

相信看到这里已经不需要我解释什么了,如你所见,Apifox 的测试用例的流程编排功能非常强大,你能 DIY 出任何复杂的场景。更多用法见文档:测试流程控制 | Apifox 帮助文档

05 Apifox CLI

知识点:命令行

如果每次测试都需要我们手动点击 运行按钮 就太不方便了,没错,Apifox 当然也考虑到了这点,Apifox CLI 就可以帮助我们实现自动化的测试。

图片

点击持续集成的按钮就能够生成 命令行代码:

将这行 shell 命令复制到任意地方执行即可实时运行测试用例/套件。

06 持续集成

知识点:自动化测试

我们先在服务器上安装 apifox-cli:

然后在发布工具中集成 测试命令即可:

图片

为了通用性,我们使用 php 脚本 将 apifox run ... 命令进行了封装,你理解成执行的是 apifox run ...   命令即可。

这里我们用的是 Spug 发布工具,类似 Jenkins,请根据实际情况配置。

07 测试报告

知识点:报告解析、钉钉通知

我们在 Apifox.php 脚本执行测试命令,并解析测试生成的 json 文件,然后将结果拼装发送到钉钉群,如果有失败会 at 相应的开发人员:

图片

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

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

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

相关文章

Jenkins 忘记登录密码怎么办

在安装Jenkins中遇到忘记登录密码该怎么呢?下面是一个解决办法 1. 先停止jenkins服务 我是用tomcat启动的jenkis 2. 找到config.yaml文件 find / -name config.xml命令执行后找到如下结果: /root/.jenkins/config.xml /root/.jenkins/users/admin_839…

正则表达式和sed

一、正则表达式 主要用来匹配字符串(命令结果,文本内容), 通配符匹配文件(而且是已存在的文件) 基本正则表达式 扩展正则表达式 1.元字符 . 匹配任意单个字符,可以是一个汉字 […

机器人计算力矩控制

反馈线性化: 反馈线性化是一种控制系统设计方法,其目标是通过状态空间的坐标变换和控制变换,使得非线性系统的输入-状态映射或输入-输出映射反馈等价于线性系统。这样,就可以应用线性系统的控制理论来实现非线性系统的控制。在机…

企业级复杂前中台项目响应式处理方案

目录 01: 前言 02: 响应式下navigtionBar实现方案分析 数据 视图 小结 03: 抽离公用逻辑,封装系列动作 04: PC端navigationBar私有逻辑处理 05: 分析 navigationBar 闪烁问题 06: 处理 navigationBar 闪烁问题 07: category数据缓存,覆盖…

【Axure原型分享】动态伸缩组织架构图

今天和大家分享动态伸缩组织架构图图原型模板,我们可以通过点击加减按钮来展开或收起子内容,具体效果可以点击下方视频观看或者打开预览地址来体验 【原型效果】 【Axure高保真原型】动态伸缩组织架构图 【原型预览含下载地址】 https://axhub.im/ax9/…

层次式体系结构概述

1.软件体系结构 软件体系结构可定义为:软件体系结构为软件系统提供了结构、行为和属性的高级抽象,由构成系统的元素描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。软件体系结构不仅指定了系统的组织结构和拓扑结构,并…

Spark RDD案例:统计网站每月访问量

这个项目利用Spark技术,通过统计网站访问记录中的日期信息,实现了对每月访问量的统计和排序。通过分析数据,我们可以了解到不同月份的网站访问情况,为进一步优化网站内容和推广策略提供数据支持。 使用Spark统计网站每月访问量 …

Android Iptables 客制化方法及基本使用

Android Iptables 客制化方法及基本使用 Android netd 的自定义链NetdConstants.cpp 的 execIptablesRestore 方法IptablesRestoreController 的 execute 方法使用 oem-iptables-init.sh 添加自定义的防火墙规则oem-iptables-init.sh 示例文件 基本概念Iptables 链Iptables 表 …

OpenHarmony 实战开发——使用分布式菜单创建点餐神器

随着社会的进步与发展,科技手段的推陈出新,餐饮行业也在寻求新的突破与变革,手机扫描二维码点餐系统已经成为餐饮行业的未来趋势,发展空间巨大;扫码点餐,是“互联网餐饮”潮流的产物,可以有效地…

k8s-Helm包管理器

这里写目录标题 什么是Helmhelm架构重要概念组件Helm 客户端Helm 库 安装heml使用halm快速部署应用添加 helm 仓库 Helm 的常用命令chart 详解目录结构Redis chart 实践创建StorageClass制备器,配置NFS动态制备修改 helm 源搜索 redis chart修改配置安装查看安装情况…

力扣HOT100 - 152. 乘积最大子数组

解题思路&#xff1a; 方法一&#xff1a;暴力 class Solution {public int maxProduct(int[] nums) {int max Integer.MIN_VALUE;int s 1;for (int i 0; i < nums.length; i) {s 1;for (int j i ; j < nums.length; j) {s * nums[j];max Math.max(max, s);}}ret…

服务器之间实现免密码传输文件(scp免密传输)

问题&#xff1a;需要定时将本服务器的文件传输到指定服务器上作为备份 通过scp实现不同服务器之间的文件传输 正常使用scp传输文件 传输文件命令&#xff1a;scp /data/文件 root服务器地址&#xff1a;/指定目录 传输文件夹命令&#xff1a;scp -r /data/文件 root服务…

【回溯】1255. 得分最高的单词集合

本文涉及知识点 回溯 力扣难道&#xff1a;1881 LeetCode1255. 得分最高的单词集合 你将会得到一份单词表 words&#xff0c;一个字母表 letters &#xff08;可能会有重复字母&#xff09;&#xff0c;以及每个字母对应的得分情况表 score。 请你帮忙计算玩家在单词拼写游戏…

Google I/O盛会省流全内容总结:AI模型家族革新与前沿技术应用的广阔前景

昨晚的Google I/O 发布会主要聚焦于AI模型和应用的更新与扩展&#xff0c;特别在生成模型领域取得了显著进步。以下是模型层面内容的简要总结&#xff1a; DeepMind官网链接&#xff1a;https://deepmind.google/ Google Veo官方&#xff1a;https://deepmind.google/technol…

小程序框架是智能融媒体平台构建的最佳线路

过去5年&#xff0c;媒体行业一直都在进行着信息化建设向融媒体平台建设的转变。一些融媒体的建设演变总结如下&#xff1a; 新闻终端的端侧内容矩阵建设&#xff0c;如App新闻端&#xff0c;社交平台上的官方媒体等新闻本地生活双旗舰客户端&#xff0c;兼顾主流媒体核心宣传…

幻兽帕鲁Palworld服务器手动+docker部署方法+备份迁移

目录 帕鲁部署官方文档帕鲁手动安装法手动安装steamcmd通过steamcmd安装帕鲁后端 docker容器一键部署幻兽帕鲁绿联云NAS机器部署幻兽帕鲁客户端连接附录1&#xff1a;PalServer.sh的启动项附录2&#xff1a;配置文件游戏存档保存和迁移 关于阿里云计算巢 帕鲁部署官方文档 htt…

监控 Apache Web 服务器性能指标

Apache Web 服务器以其可靠性、灵活性和强大的功能而闻名&#xff0c;几十年来一直是互联网的支柱&#xff0c;从小型个人博客到大型电子商务平台&#xff0c;Apache 的多功能性使其能够轻松处理各种 Web 应用程序。 Apache 的 Web 服务器是如何工作的 尽管 Web 服务器涉及复…

Audio Hijack for Mac 激活版:音频录制与处理软件

Audio Hijack for Mac&#xff0c;让您的音频创作更加高效、便捷。它支持多种音频格式的录制和导出&#xff0c;包括MP3、AAC、WAV等&#xff0c;让您的音频作品具有更广泛的兼容性。同时&#xff0c;软件界面简洁明了&#xff0c;操作流畅自然&#xff0c;即使您是初学者也能快…

5.2 操作系统安装必备知识

目前操作系统安装方式接近于全自动化&#xff0c;用户无需做过多操作就能完成操作系统安装。但是操作系统安装也有其复杂的一面&#xff0c;例如固件及分区表的不同就会导致操作系统安装失败。本节主要介绍系统安装的一些必备知识。 5.2.1 BIOS 概述 BIOS(Basic Input/Output …

【运维自动化-配置平台】如何自动应用主机属性

主要用于配置主机属性的自动应用。当主机发生模块转移或模块新加入主机时&#xff0c;会根据目标模块配置的策略自动触发修改主机属性&#xff0c;比如主机负责人、主机状态。主机属性自动应用顾名思义是应用到主机上&#xff0c;而主机是必须在模块下的&#xff0c;所以有两种…