新版已经修改为并发的模式,可以同时测试多个测试集合,极大提高了速度

YAPI 是什么

YAPI 是一个高效、易用、功能强大的 api 管理平台,可以在上面进行接口的集中管理,并且支持直接导入和自动更新 swagger 的接口数据。

YAPI 导入 swagger 的接口数据

目前大多数的开发写接口文档都会使用 swagger。YAPI 很好的兼容了这点,可以直接从 swagger 导入数据。
首先在 YAPI 中创建一个项目,然后选择数据管理,如下图所示,导入 swagger。

如何获取 swagger 的 json 连接呢。swagger 有 2 个版本,获取方式分别如下图所示。


编写测试用例

导入完成之后,有些接口可能需要配置一些请求头之类的,这个就需要单独调整了。目前 swagger 导入的时候,不会导入认证用的请求头信息。这就需要你自己调整了。这里就不过多的描述了,可以去看 yapi 的文档。

配置完接口之后,切换到测试集合标签。在这里添加测试集合。把之前的接口添加进来。通常先添加登录接口,获取认证,然后再添加其他的接口。

YAPI 可以传递请求参数的,并且是由上至下的请求顺序。所以顺序很重要。这里有官方文档可以参考。这里我附上地址供参考:YAPI 测试集合教程

添加测试环境

有时候我们会有多个环境,比如测试环境、开发环境、预发布环境、生产环境等。在项目的设置中,我们可以添加多个环境,并且配置一些这个环境的全局参数,比如如果有 AB 测试,是通过 Header 区分的,就可以在这里配置。界面如下图所示:

接入 CI 实现自动化

编写好之后,需要先运行一次,测试一下看看自己编写的测试用例是否通过,通过了,就可以接入到 ci 中运行了。在测试集合界面选择服务端测试,可以得到一个链接,如下图所示。

这里可以用脚本或者其他的程序通过 get 请求来请求这个 URL,实现自动化。这里我写了一个插件,并且做好了 docker 镜像,可以直接使用,附上 github 地址:drone_yapi_test

初学 go 语言,代码写的有点烂,欢迎大佬 pr

插件的使用方法很简单。直接 docker 运行的话,就是下面这样:

docker run --rm \
  -e PLUGIN_HOST=http://yapi.com.cn \
  -e PLUGIN_TOKEN=ab1058076e0945cf14 \
  -e PLUGIN_ID="11,31,15" \
  -e PLUGIN_ENV="env_11=网关地址" \
  registry.cn-hangzhou.aliyuncs.com/lm93129/drone_yapi_test:latest

这里有 4 个参数。我来解释下:

怎么获取上面的四个参数呢?其实很简单,首先 host 就不用说了。其它的参数都可以通过上面我们获取到的那个 URL 提取出来。我这里的示例上,ID 是有多个的,这里解释下,因为我们可能需要运行多个测试集合,所以当你输入多个 ID 的时候,插件就会按顺序运行每个测试集合。

接入到 drone-ci

由于我用的是 drone 这个 ci 工具,所以这里演示下这个插件在 drone 里面是怎么运行的。drone 中的 pipeline 写法如下:

- name: yapi-test
  image: registry.cn-hangzhou.aliyuncs.com/lm93129/drone_yapi_test:latest
  settings:
    host: http://yapi.com.cn/
    id: [11,19]
    token: ab105800479fdb69cd8f485f86b7776e0945cf14
    env: env_11=网关地址

然后运行的结果呢,就是下面这样:

如果过程中有不通过的接口,ci 就不通过,然后就会触发 ci 的钉钉通知。

接入其它的 ci 程序

对于其它的 ci 程序接入,可以参考上面的 docker 运行方式进行接入。不过要求就是需要支持 docker。

后话

这个插件还是有一些不完善的地方的。以后可能还会更新一些版本,如果有更好的建议欢迎提 issue 和 pr。

之后会写一些 drone 这个持续集成工具的使用。我挺喜欢这个工具的,感觉很方便。
我的个人博客地址:https://fs.tn


↙↙↙阅读原文可查看相关链接,并与作者交流