项目作者: lm93129

项目描述 :
YAPI的接口测试CI插件,可以用于drone和gitlab-ci等
高级语言: Go
项目地址: git://github.com/lm93129/drone_yapi_test.git
创建时间: 2019-09-02T06:30:56Z
项目社区:https://github.com/lm93129/drone_yapi_test

开源协议:

下载


请求 yapi 的接口,进行测试集合的测试。使用方法如下:

如果项目目录中有.env配置文件,则下面的命令不需要加其他参数,会自动加载项目中.env中的配置,方便每个项目自行维护
.env文件的配置见.env.example中的示例

需要注意的地方:

测试用例集合的测试时间超过20秒会出现超时
测试用例集合出现错误,程序不会直接退出,会测试完所有的用例集合后再检测是否有错误的集合,然后再退出
YAPI上的测试用例中有test的断言检测,如果检测失败,会报错,并且会打印错误到日志

  1. #YAPI接口自动测试
  2. - name: yapi-test
  3. image: registry.cn-hangzhou.aliyuncs.com/lm93129/drone_yapi_test:latest
  4. settings:
  5. host: http://yapi.com.cn/
  6. id: [11,31,15]
  7. token: ab1058076e0945cf14
  8. env: env_11=网关地址
  9. # 是否包含子集,适用于yapi的子集分支,如果没有该参数,则默认不包含子集
  10. DESCENDANTS: "true"
  11. # 非必须参数,该参数会发送测试过程中的yapi参数到DATAURL地址中,进行数据收集
  12. DATAURL: http://127.0.0.1:3000/interface/apidata
  13. PROJECT: etl-root

使用 docker 运行,如果是用env文件运行的,需要挂载env文件到插件目录并使用-w指定env所在目录

  1. docker run --rm \
  2. -w /src/xxx项目(仅当使用env文件的时候需要) \
  3. -v /src/xxx项目(仅当使用env文件的时候需要) \
  4. -e PLUGIN_HOST=http://yapi.com.cn \
  5. -e PLUGIN_TOKEN=ab1058076e0945cf14 \
  6. -e PLUGIN_ID="11,31,15" \
  7. -e PLUGIN_ENV="env_11=网关地址" \
  8. # 是否包含子集,适用于yapi的子集分支
  9. -e PLUGIN_DESCENDANTS="true" \
  10. # 非必须参数,该参数会发送测试过程中的yapi参数到DATAURL地址中,进行数据收集
  11. # -e PLUGIN_DATAURL="http://127.0.0.1:3000/interface/apidata" \
  12. # -e PLUGIN_PROJECT="etl-root" \
  13. registry.cn-hangzhou.aliyuncs.com/lm93129/drone_yapi_test:latest

使用 gitlab-ci 运行

  1. apitest:
  2. image: registry.cn-hangzhou.aliyuncs.com/lm93129/drone_yapi_test:latest
  3. stage: apitest
  4. variables:
  5. PLUGIN_HOST: "http://yapi.com.cn"
  6. PLUGIN_TOKEN: "ab1058076e0945cf14"
  7. PLUGIN_ID: "11,31,15"
  8. PLUGIN_ENV: "env_11=网关地址"
  9. # 是否包含子集,适用于yapi的子集分支
  10. PLUGIN_DESCENDANTS: "true"
  11. # 非必须参数,该参数会发送测试过程中的yapi参数到DATAURL地址中,进行数据收集
  12. PLUGIN_DATAURL: "http://127.0.0.1:3000/interface/apidata"
  13. PLUGIN_PROJECT: "etl-root"
  14. script:
  15. - /bin/apitest

发送yapi测试结果功能需要自己有个数据收集的平台,改功能会上传yapi的测试结果json数据到你指定的地址中,PROJECT项目名称会在header的project_id字段中,所以自建的测试数据收集平台需要获取发送过来的json,header中的project_id字段内容。
具体发送的json示例,可以在wiki中看到