如何使用Gitlab和YApi实现完全自动化测试?

最近,由于需求越来越多,项目越来越复杂,测试同事不堪重负。为保证测试质量,减少代码部署后可能出现的问题,项目组决定引入自动化测试。

如何使用Gitlab和YApi实现完全自动化测试?

由于我们的代码管理工具是Gitlab,接口管理工具是YApi,并且Gitlab支持Webhook,YApi支持自动化测试,所以我们决定使用Gitlab和YApi来实现自动化测试。大致流程是,我们先在YApi添加要自动化测试的测试集合,然后在Gitlab仓库配置Webhook地址,最后当我们将要部署的代码合并到master分支时,自动触发Webhook,启动自动化测试程序,测试这些测试集合。

如何设置自动化测试程序?

1、添加测试集合,导入接口

如何使用Gitlab和YApi实现完全自动化测试?
如何使用Gitlab和YApi实现完全自动化测试?

2、编辑测试用例

编写测试用例主要涉及两个方面,一个是请求参数,另外一个是断言脚本。请求参数用于模拟调用API接口,断言脚本用于判断API接口是成功还是失败。

A、请求参数

YApi 还提供了 Mock 参数和变量参数。Mock参数用来生成随机字符串,变量参数是为了解决请求参数依赖其他接口的返回数据或参数。

Mock参数可以由用户自定义,如下:

如何使用Gitlab和YApi实现完全自动化测试?

Mock参数

而变量参数格式为:

$.{key}.{params|body}.{path}

假设现有两个接口,分别是导航标题和文章列表。如下:

如何使用Gitlab和YApi实现完全自动化测试?

而文章列表接口依赖于导航标题接口返回的结果。如果导航标题接口的参数和返回值有如下结构:

如何使用Gitlab和YApi实现完全自动化测试?
如何使用Gitlab和YApi实现完全自动化测试?

则文章列表接口的参数可以配置成如下这样:

如何使用Gitlab和YApi实现完全自动化测试?

其中 $. 是使用动态变量的标志,$.269.params 表示 key 值为 269 用例的请求参数,$.269.body 表示 key 值为 269 用例的返回值。

目前 yapi 中query、body、header和pathParam的输入参数已经支持点击选择功能,无需自己填写表达式,只需在弹窗中选择需要展示的表达式即可。输入选项包括常量、mock数据,在测试集合中也支持变量选择。具体用法:单击编辑按钮打开表达式生成器,点击需要的数据创建表达式,这里也可以实时查看表达式结果。

如何使用Gitlab和YApi实现完全自动化测试?

B、断言脚本

如前面所说断言脚本是用于判断API接口是成功还是失败的,既可以针对http状态码,也可以针对接口返回的数据。

如何使用Gitlab和YApi实现完全自动化测试?

YApi中有丰富的断言方法,不过基本上使用其中的两个就足够了。

  1. assert.equal(actual, expected)判断 actual 是否等于 expected,例如 assert(1, 1)通过
  2. assert.notEqual(actual, expected)

如何结合Gitlab来实现自动触发

YApi默认是在浏览器跑自动化测试的,在浏览器跑需要浏览器环境支持。不过,YApi也支持服务端自动化测试,服务端自动化测试跑在YApi服务端,不需要依赖浏览器环境,只需要访问 YApi 提供的 url 链接就行。后面我们使用Gitlab来实现完全自动化测试的关键所在就是使用了YApi的服务端自动化测试。

如何使用Gitlab和YApi实现完全自动化测试?

配置好了YApi,下面我们就来看看Gitlab上的配置。Gitlab上的配置很简单,就是配置Webhook。

Gitlab上的每一个项目都可以配置至少一个Webhook,每一个Webhook包含两个配置,一个是通知链接,另一个是触发的事件。如下:

如何使用Gitlab和YApi实现完全自动化测试?

通知链接就是前面配置好的YApi的服务端测试的通知地址,触发事件就是告诉Gitlab需要什么时候请求通知链接。如上图所示,触发事件有五种,大家既可以根据自己的实际情况来选择,当然也可以像我一样选择Tag push events。这样只有在发布的时候,才进行自动化测试。

如何使用Gitlab和YApi实现完全自动化测试?

上图是YApi完成自动化测试后的测试报告,从图中我们可以清晰看到每一个接口的执行结果,包括请求地址、请求参数、响应状态、响应数据、响应时间以及验证结果等。这对于我们在发布代码前,判断代码是否异常有很大帮助。

内容出处:,

声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。文章链接:http://www.yixao.com/tech/17040.html

发表评论

登录后才能评论