最近趁摸鱼时间体验了一款神器,堪称后端前端们的摸鱼加速器,测试们的寿命催化剂。
那就是:Apifox。中国自主研发的集文档、接口调试、Mock、接口自动化测试一体的协作平台。
一套系统、一份数据,可解决多个系统之间的数据同步问题。
定义好接口文档,则接口调试、数据Mock、接口测试就可以直接使用,无需再次定义;接口文档和接口开发调试也可以同一个工具,接口调试完成后即可保证和接口文档定义完全一致。高效、及时、准确!
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6079a80f23534f1b87066deb6d6541fc~tplv-k3u1fbpfcp-zoom-1.image)
已有的API工具,例如postman,fiddler等,虽然功能也很强大,但是食用起来还是比较的繁琐,面对少量的接口还好说,要是面对大量的接口,需要耗费一定时间和精力去分门别类建立规范文档,添加相应的接口,Mock数据测试......
或许因为习惯性的问题,难以移步新的软件工具,但是这款Apifox工具一旦你接触之后,你就可能停不下来并爱上它。以下是亲测体验:
**Swagger接口导入Apifox**
先前接口服务通常配置开源Swagger,来统一前后端用于生成文档和代码的工具,它使用 yaml/json 作为描述语言。通过 OpenAPI Specification 来描述 API,最后使用 Codegen 根据不同的配置来生成各种 language、library 的 Code、Docs。
这个功能出现之后,已经成为了不少拥护者爱戴,接口分门别类,请求的参数和输出参数一目了然。
但当接口数量堆积一定数量之后,测试的累赘随处可见,无法快速定位到目标接口,测试的数据痕迹无法保留,切换接口版本需要重新输入token和参数,无法mock数据,需要手动“张三”,“123”......Umm
所以,使用Apifox,以上的问题通通可以解决。
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7d67f6df9c064ef68a897349a2605841~tplv-k3u1fbpfcp-zoom-1.image)
首先,我们通过Swagger文档的json格式地址导入到Apifox。这成功的快感着实让人眼前一亮。
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3735f6ffb4e1474fb4732cc42d4a1869~tplv-k3u1fbpfcp-zoom-1.image)
在项目概览的位置,有一个自动导入功能,可以看到选择导入的频率,亲测每隔3小时之后就会更新接口。
默认选项OpenApi(Swagger),输入名称和Swagger的json地址,在高级选项里最好勾选接口路径加上basePath,因为接口域名地址我们可以在全局配置,然后指定在你建立的项目文件夹里,另外接口的覆盖模式也可以由自己选择。
导入之后,发现接口按照Controller的命名为分组导入,相应数据模型也会导入,请求接口的时候按照原有的接口实体进行调用。
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b5cec93a81e748859ccb5f041efc3e1d~tplv-k3u1fbpfcp-zoom-1.image)
Apifox 全局变量配置
前面提到过,导入接口文档的时候,选择【接口路径加上basePath】,此时我们看到调用接口的地址是一个半路径,现在我们通过全局变量的方式来补全接口。
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/607933cdc02e4e5fb901b342d32adabc~tplv-k3u1fbpfcp-zoom-1.image)
右上角点击管理全局变量,添加接口服务名称和接口的地址。
在接口的目录里的服务(前置url)添加接口地址。我们的项目可能会包含多个接口服务,我们按每个接口服务为分组,相应的文件夹里选择自己的接口地址,然后所有子级的文件夹的前置url都继承自父类(感叹面向对象发挥到了极致)。
然后,就可以请求了?你是否会发现,我们的接口里会有授权token以及特殊头部?难道我们每个接口请求都要手动配置一遍吗?先生多虑了,我们来看。
我们以token为例子,首先在全局添加一个变量:om_token,然后在授权接口里调用之后,点击【后置操作】,添加之后选择【提取变量】。
注意,此处的变量名称要和全局变量的一致,然后通过表达式:$.属性名 进行提取变量赋值给全局变量。
成功之后,会在控制台里看到已经赋值给om_token了,在全局变量管理里也能看到token的值。
然后使用,在接口的总目录里,点击【Auth】,选择【Bearar Token】,Token的值选择刚刚配置的变量名【om_token】。这里可能不同的接口有不同的token类型,只需选择对应的接口文件夹里配置对应的token变量即可。
通过全局变量,我们可以把固定不变的参数都可以通过全局变量或者提取变量的方式来实现呢。
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6dd06efc3e5b47c3986f3e9e952ab0a7~tplv-k3u1fbpfcp-zoom-1.image)
到了这里我们已经把接口的环境搭建好了,现在可以实现调用。此处一个完整的接口调用就完成了。
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2e851dab0a304536870bb5efe4b0915b~tplv-k3u1fbpfcp-zoom-1.image)
比如Put,Post请求需要传递实体的,我们可以通过自动生成Mock数据进行请求,而不用通过我们自己手动输入张三,李四啦。
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/73cccbb9c1d64c828a6cd546bdd8e002~tplv-k3u1fbpfcp-zoom-1.image)
Apifox 自动测试组件
我们还可以实现自动化测试,自行选择单元测试或者集成测试。
在左侧菜单【自动化测试】里右键分组添加【测试用例】,选择从接口中导入,选择需要测试的接口,下边可以选择【绑定】接口,就会两边同步更改,相应的接口测试数据也会同步测试。
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9a9e0984965d45e785d22b2a1abaff25~tplv-k3u1fbpfcp-zoom-1.image)
导入测试的接口之后呢,右侧可以选择测试的频次,也支持压力测试。
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/84d4069b6de44b6e90c4381370f682c1~tplv-k3u1fbpfcp-zoom-1.image)
配置之后,可以查看对应的测试报告,成功和失败的数据,以及接口调用的时间。咱们是不是可以开发一个功能之后,配置一些压力测试数据,让他自己跑我们就可以摸鱼刷水去了?
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/fa4e130f288345fb9f0e67095cb27a65~tplv-k3u1fbpfcp-zoom-1.image)
咱作为一名严谨的码农,一些测试用例自然要考虑全,我们可以在mock参数的时候 ,值可以配置动态变量,例如等价类划分、边界值法、因果图、判定表,正交排列。
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5921f765185c40bb969a12d5db2ba9f4~tplv-k3u1fbpfcp-zoom-1.image)
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0e3884aecf7c44859fcab532b403f675~tplv-k3u1fbpfcp-zoom-1.image)
当然,还可以生成请求代码;还能发布到Api Hub共享;查看一些知名开源Api接口。参照大佬们的开源接口文档,瞬间知道什么是世界的参差。
能够看到他们的接口API定义是很严谨,很完善的,从中也能借鉴不少规范。
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d1927bde28ed47f39aab0cc00c4cc5c6~tplv-k3u1fbpfcp-zoom-1.image)
目前体验的都是在开发过程中实际用到的功能,其功能远不止这些。还能链接数据库,通过sql脚本来测试开发,且支持多种语言,有兴趣的伙伴可以自行体验。
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f42088e08c194c1588a79249ffb9ff74~tplv-k3u1fbpfcp-zoom-1.image)
**Apifox 下载地址**
软件完全免费,复制下面的链接,粘贴到浏览器打开即可下载,
官网地址:[www.apifox.cn](https://www.apifox.cn/?utm_source=liam)
有疑问加站长微信联系(非本文作者)