重庆网站建设网搜科技,网站建设怎么添加视频,网页无法访问公司内网,长春做商业平台网站前言
不知道有多少人和我有着这样相似的经历#xff1a;从写程序只要不报错就不测试#x1f60a;#xff0c;到写了程序若是有bug就debug甚至写单元测试#xff0c;然后到了真实开发场景#xff0c;大哥和你说#xff0c;你负责的功能模块的所有接口写完要测试一遍无误在…前言
不知道有多少人和我有着这样相似的经历从写程序只要不报错就不测试到写了程序若是有bug就debug甚至写单元测试然后到了真实开发场景大哥和你说你负责的功能模块的所有接口写完要测试一遍无误在commit和push
这时❔️就出现了怎样进行接口测试这么多接口要挨个儿写单元测试嘛真心抗拒大哥就很贴心给我展示了两种方案看清楚了额作为后端开发那选择Apifox开局吧虽然之前也没闻其名用其品但谁让我喜欢它的红旭日东升照耀大地
前置知识
1️⃣在实际生产项目中后端在完成功能模块中的接口开发后需要对接口进行自测避免与前端联调时出现本不该有的错误提供工作对接效率
2️⃣接口测试用于测试前端与后端之间进行数据交互的接口测试重点传参正确性、响应结果正确性、功能实现正确性和异常处理合理性与完整性
3️⃣对于http的请求与响应有一定认识这Y的是必须的
Apifox干货运用
简介
学习一个东西最好的方法就是阅读说明书但绝不是一上来就猛冲说明书而是在实际运用中遇阻在针对性阅读解决这样事半功倍请对这句话有点印象因为接下来我会用实际行动来印证这句话
这是一款开发协作工具可用于接口测试多平台可用这是官网下载地址https://apifox.com
官网还提供了使用文档https://apifox.com/help
真心建议 如果是刚接触接口测试别看官方入门视频真的从入门到入土
使用方针
1️⃣请大哥演示一遍借用Apifox进行接口测试的具体使用流程
2️⃣自己上机操作一遍对于其使用有了清晰而模糊的印象便可然后在对所写接口进行独测与分析思考小结
3️⃣学习常见使用场景使接口测试高效便捷
前两步请自行完成而我能提供的就是在常见场景下实用技巧的整理形与神
场景使用
官方文档第一篇https://apifox.com/help/api-docs/api-design
前置URL使用场景
接口测试重点测试的是某路由下该接口的功能实现大多数时候其接口路由下的前置URL是重复的所以每次用接口的全路径测试可以但不够优雅 在程序中对于重复的代码块可以用函数封装而在测试这里Apifox提供了前置URL功能 这只是一道开胃菜重点是希望通过这道开胃菜了解Apifox中环境与变量请阅读官方文档第二篇https://apifox.com/help/environment-and-variables/environment-management
后置脚本使用场景一
有了环境与变量的认识接下来看看这样一个使用场景相信非常眼熟
将上一个接口中获取到的响应体中某个字段用在下一个接口的请求路径中并且该字段对应的值是不重复的由时间戳随机数构成 请信奉一句话优雅永不过时 第一步将上一个接口响应体中有用字段设为环境变量这里需要使用后置脚本 第二步将下一个接口请求路径中的动态值设为环境变量 思路简介将上一个接口中有用字段设为环境变量这样在请求完上一个接口后环境变量就有值那么下一个接口的请求路径的动态值就会自动设置上了
后置脚本使用场景二
很多时候进行接口测试需要携带token才能通过校验而token的获取要么自行模拟登录获取要么让前端手动传过来我想你也不是喜欢把事情搞复杂的人所以还是自食其力
这时候可能会说进行接口测试我直接在拦截器放行不就不用携带token了嘛是这样的不过很多时候又需要从token中获取一些信息进行其他逻辑操作
要实现模拟登录首先得明白登录实现的真实逻辑
登录实现通常分为两步第一步就是请求跳转到登录界面这时候前端就会加载静态资源和请求验证码接口
这里以若依在线演示平台为例来验证这一步http://vue.ruoyi.vip/ 后端对于前端请求的验证码接口会返回一个uuid来标识所返回的验证码图片
第二步前端会基于登录信息、验证码答案和uuid来请求登录接口 在验证码接口响应体中uuid是动态生成的验证码答案code也是在随机变化的那么如何在模拟登录操作时高效取到token
第一步通过后置脚本将uuid设为环境变量这里涉及到验证码code获取后面会重点提及这里先忽略 第二步将登录接口中的请求体的uuid字段设为环境变量 说明 之前让看环境与变量时涉及到变量使用所有类型的变量都是通过双大括号的方式。而这里为什么要在双大括号外加引号了是因为使用后置脚本设置的环境变量类型没有定义只存储了某环境变量对应的某值所以当使用的环境变量为字符串类型就需要用引号标识 后置脚本使用场景三
当获取到了token后每个接口都需要携带token难道每次手动在请求头中手动添加嘛可以但没必要
这里你可以根据上面两个使用场景自己推演出来也可以对照着我的实现
第一步使用后置脚本将响应体中的token字段设为环境变量 第二步将请求头中的Authorization字段的取值设为环境变量token 数据可视化使用场景
对于验证码图片是后端通过公共库随机生成的返回的验证码图片通常是base64编码的字符串
而在模拟登录中通常需要通过工具将base64编码的字符串转为图片然后计算得出验证码答案code这样就会使模拟登录变得更加繁琐
实现可能不止一条方案但我只有这一条方案可借鉴参考
思路 通过后置脚本将获取到的响应体中的base64编码的字符串自动转为图片然后就可以快速得出验证码答案
核心 如何将base64编码的字符串转为图片我刚开始尝试在Apifox中使用js来实现但结果不尽人意当时也不知道该怎么破局。后来结合官方文档自己有了一条实现思路便是通过在线工具的接口间接获取图片
简单介绍下我实现的流程在得知官方有提供该功能网查无此资料便只好对照官方文档边啃边实现
官方文档第三篇https://apifox.com/help/pre-post-processors-and-scripts/scripts/examples/visualize 官方文档第四篇https://apifox.com/help/pre-post-processors-and-scripts/scripts/api-references/pm-reference
通过爱资料工具可将base64转为图片 第一步观察其请求与响应 第二步观察所请求的验证码接口的响应体 第三步在脚本内异步发送 HTTPS 请求
const echoPostRequest {url: https://api3.toolnb.com/tools/base64ToImages.json,method: POST,header: [Content-Type: application/x-www-form-urlencoded; charsetUTF-8,User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36,Connection: keep-alive],// body 为 form-data 格式body: {mode: formdata,formdata: [{ key: data, value: pm.response.json().img }]}
};pm.sendRequest(echoPostRequest, function (err, res) {console.log(err ? err : res.json().data.file);let resp {response: res.json().data.file}let template htmlimg src{{response}} //htmlpm.visualizer.set(template, resp)
});注意 官网的异步请求头用{}包裹但不知道为何最开始使用时报错后来测试时又可以正常使用了所以提供两个版本供选择
const echoPostRequest {url: https://api3.toolnb.com/tools/base64ToImages.json,method: POST,header: {Content-Type: application/x-www-form-urlencoded; charsetUTF-8,User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36,Connection: keep-alive},// body 为 form-data 格式body: {mode: formdata,formdata: [{ key: data, value: pm.response.json().img }]}
};pm.sendRequest(echoPostRequest, function (err, res) {console.log(err ? err : res.json().data.file);let resp {response: res.json().data.file}let template htmlimg src{{response}} //htmlpm.visualizer.set(template, resp)
});最后效果图
小结
从大哥推荐通过Apifox进行接口测试到本篇文章诞生已有三周之久
从不会用到用的惯往往只需要向前迈出这么一步可这一步耗费了我三周希望本篇文章能对你有所帮助
题外话
在CSDN上如果有文章对你产生过帮助还请点赞支持这既可以激励创作者也会让良币被更多需要的人发现。更为重要的是做人还是得学会投之以桃报之以李 本来国内博文只能说发展前景很是宽广毕竟批判家动动嘴远比动动手要简单多说的永远比做的多要是不行你不能自己动手改变嘛这也无可厚非可最近发现有的搞博文搞着搞着就变成为了打榜而刷起了人情世故懂得都懂。只能说德不配位必有灾殃