🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## Apifox:填补 DevOps 自动化运维、部署、测试的最后一公里 —— 国产云时代的接口管理工具 **last update: 2022-07-04 15:23:11** ---- [TOC=3,8] ---- > DevOps 是云时代的开发标配,最近在团队中推广后收获颇丰,发现大家 coding 的幸福指数都提高了,但我觉得似乎它还不够完整,后来我知道了,它缺失了上线前的最后一公里 —— **集成 Apifox 的自动化测试。** ![](https://cdn.aipin100.cn/77ea8cf583b8408b49b38eac84bcd883) ![](https://cdn.apifox.cn/www/screenshot/dark-apifox-test-case-3.png) ![](https://cdn.aipin100.cn/1be03d70d6d366405cfe270b1ab2f2c0) ---- ### Apifox 是什么 ![](https://cdn.apifox.cn/logo/apifox-logo-text.png) ![](https://cdn.aipin100.cn/c246391ffde0a92b5170cb12221656f3) ~~~ Apifox = Postman(调试) + Swagger(文档) + Mock(数据Mock) + JMeter(自动化测试) 前后端开发 后端开发 前端开发 无(测试手动测试app) ~~~ 这是我们之前的前后端开发流程,正对应官方说明的旧时代协作方式。 接口调试、API文档、Mock 这些我想一线的前后端开发比我更有深有体会,不再使用各种各样的工具,团队在一个地方统一定义、调试接口,一致的协作体验无疑能极大的提高效率。 我是后端开发,但更偏向于基础设施、开发质量和协作方面的工作。所以我这里主要关注的是自动化测试。 ---- ### 为什么是 Apifox 第一次见到它时,我以为就是个换皮的 Postman,只是加了汉化而已,毕竟 Postman 要普及很多,哪怕没有中文支持,国内开发者依然很热衷它。 可很快我就发现,Apifox 确实是对前后端协作开发的痛点理解得最为深刻和彻底的,的确落实了官网的口号。此时我再对比发现确实是青出于蓝了。这让我想到一句话,**“解决方案会更快被淘汰掉,而问题能够延续更久”,显然 Postman 是前者,Apifox 是后者。** 前者提供的是解决方案,而后者是持续关注开发者api协作开发的这个问题。 Apifox 为什么要选择走这样一条任重而道远的路,我也在后面找到了答案,原来 Apifox 创始人张剑光就是技术出身,且核心团队源自之前的创业团队,我在想这个项目或许是他们某次深夜下班时,看着疲惫不堪的自己,突然大喊一声说:“我们就做这个吧!”,“对,早就该做了”,“你们知道我说的是什么吧”,...,他们是在为自己,为程序员这个群体做一款好用的工具,想到这里我会心的笑了。 Apifox 选择与开发者站在一起,所以我们选择与她站在一起。 ---- ### 我们怎么使用 Apifox ![](https://img-blog.csdnimg.cn/img_convert/8870a26c8d2d07ca5bd34a32aa95c1a7.png) “你这接口保熟吗?”,“我刚测试还是好的,你再看看” 坦白地说,我想没人敢对接口“保熟”。 基础代码我们都会写单元测试,可是上线的接口,会牵扯到环境、业务依赖等各种情况,单纯的构建过程显然无法做到覆盖所有接口测试的,在项目初期基础代码经常更改,谁能保证刚才还可以的接口现在还是好的呢? 在一天要发布十几版,几个环境时,人工手动测试如何能够完全覆盖到。 这就是我们面临的问题:对接口进行测试非常繁琐,不测试,无法“保熟”,无法安心睡觉。 [Apifox](https://www.apifox.cn/) 自动化测试 为我们提供了方向: ~~~ apifox run https://api.apifox.cn/api/v1/api-test/ci-config/123/detail?token=XXX -r html,cli ~~~ 我们将 Apifox 自动化测试 集成到我们的发布流程当中: ![](https://cdn.aipin100.cn/6bb29fa1b0f6c821aa1698b02886c533) ![](https://cdn.aipin100.cn/1d2c4c87e14a63a59384e902a5bbc69b) ![](https://cdn.aipin100.cn/1be03d70d6d366405cfe270b1ab2f2c0) 自此,接口终于“保熟”了。 就这么简单?对,就这么简单。 已经迫不及待的想要试试吗?这是官网:https://www.apifox.cn ---- ### 附:常用脚本 #### 断言 result success check ```javascript pm.test("assert result success: code != 0", function () { var jsonData = pm.response.json(); // console.log(jsonData);   pm.expect(jsonData.code).to.not.eql(0); }); ``` ---- #### 断言 result error check ```javascript pm.test("assert result error: code == 0", function () { var jsonData = pm.response.json(); // console.log(jsonData);   pm.expect(jsonData.code).to.eql(0); }); ``` ---- #### 请求前注入设备id参数 ```javascript var uuid = require("uuid"), btoa = require('btoa'); var queryParams = pm.request.url.query; // var base_url = pm.environment.get('BASE_URL'); // var k = 'device_id:' + btoa(base_url); var k = 'device_id'; var device_id = pm.environment.get(k) || ''; if (device_id === '') { device_id = uuid.v4().split('-').pop() + String(Date.parse(new Date()) / 1000); } // console.log(p, k, device_id); // 设置环境变量 pm.environment.set(k, device_id); // 注入请求参数 queryParams.upsert({ key: 'device_id', value: device_id, }); ``` ---- #### 看云 API 接口导出 最新可用脚本在这里:https://pan.baidu.com/s/1eBzInCsmHuDK4hM7LFNyRQ?pwd=r92p ---- ### 总结 在一个地方,前端、后端、产品、测试 们在一起,用一个工具完成 api 接口的不同阶段的开发与测试,并持续地“保熟”上线。一个提升 **coding 幸福感** 的工具,先进团队,用 [Apifox](https://www.apifox.cn/),不加班。 ---- ### 人生苦短,我爱 DevOps git: 源码管理、协作开发 spug: CI/CD 自动化 持续集成、持续发布、自动化测试 apifox: API 接口自动化测试 command: 自动化测试 php think Doctor php think Apifox ... socketLog(浏览器插件): 实时日志工具 dbAckLog: 应用ORM操作排错工具 grafana: 应用监测 ?: 日志平台(提高排故效率) -------- 最终: 干事少,下班早。 bug少,头发多。 定位快,修复快。 人生苦短,尽可能的自动化。