目录

yapi中实现自动化接口测试后包括请求参数化,header参数化,在Jenkins中集成构建

yapi中实现自动化接口测试后(包括请求参数化,header参数化),在Jenkins中集成构建

前言

  • 今天给大家介绍一下yapi这个工具怎么实现接口自动化测试,并能集成自动构建;为什么用yapi这个工具呢!明明接口测试的工具那么多,那是因为我们公司的研发用的yapi这个工具( ),且这个工具有测试功能,虽然不知道这个工具还有没有在维护了。

写测试用例

首先我们先直接编一个测试用例,这个时候,yapi的优势就出来了,我们直接把研发的接口生成我们的测试集合就好,不用我们在写一次接口信息,方便~~~

https://i-blog.csdnimg.cn/blog_migrate/38c460dd5347e8d7423d9e4db6654e7b.png

对执行环境,请求header,请求参数,进行设置,运行

https://i-blog.csdnimg.cn/blog_migrate/9cdf0247fa08719adad8e78e436374fa.png

运行成功后,考虑到作为一个测试用例,肯定有断言,所以我们也需要

注:Test 脚本只有做自动化测试才执行

刚刚我们看到,在响应中body的status,对应数据为true,所以我们断言就可以用这个

https://i-blog.csdnimg.cn/blog_migrate/c0b546826f621ebec332a7d08b2ced2c.png

https://i-blog.csdnimg.cn/blog_migrate/62e93ee89e1992f25fb18acb98718837.png

批量测试用例执行,并断言

我们重复上面的步骤,进行测试用例的编写(其实就是不同传参、不同断言),完成后,我们就可以在集合中看到我们编写的测试用例。

https://i-blog.csdnimg.cn/blog_migrate/4fc506a5400e5bfb15eb465794509e28.png

这个界面我们就可以批量的执行它,并且可以看到单个的测试报告和整体的测试报告。

https://i-blog.csdnimg.cn/blog_migrate/97ce92c0c3aa6fc41f05e52a0e97e8fd.png

https://i-blog.csdnimg.cn/blog_migrate/e308916444564d3c009d7d21a71daeeb.png

这里是我断言验证失败,有不同的显示,并且测试报告中验证结果有解释,可以看到具体情况

https://i-blog.csdnimg.cn/blog_migrate/da3bbdd81c83aeb4259707fec93f86e0.png

https://i-blog.csdnimg.cn/blog_migrate/819a8f91f4d005b90e5f8eb522961de6.png

下面再简单介绍一下通用规则配置:

https://i-blog.csdnimg.cn/blog_migrate/fd03ba87dbf6f51a7278ed13e2bd3b96.png

这里就是对这个测试集合的用例进行统一配置,有HttpCode、返回json、数据结构、全局测试脚本,就不用在每个用例下面进行test配置了,方便编写、配置、管理,注意,这里配置过后,之前设置的test配置也会生效,但是,尤其是全局脚本,会优先调用全局脚本,只有全局脚本通过测试,才会开始跑case自定义的测试脚本。

请求参数化(请求参数、header参数)

其实请求参数和header参数化都是一样的道理,原理和操作都是一样的.

注意:参数化的话,我们一定要在实现参数化之前,引用的参数是之前执行过的那个用例,不然会导致参数化找不到对应的编号用例。

请求参数

先说请求参数化,在需要对应参数的那个用例已经完成的前提下,按照一定的格式进行编写就OK了

{{ $.17.body.message }} //id为17的用例的返回里的message字段的值
{{ $.17.params.type }} //id为17的用例的请求里的type字段的值

https://i-blog.csdnimg.cn/blog_migrate/6c0db8e2c7d1ad354074f8eb4ede7a8a.png

https://i-blog.csdnimg.cn/blog_migrate/e856eb7438d7dce1c32c24f857ea3495.png

https://i-blog.csdnimg.cn/blog_migrate/94db2a92b648394568c7da23bbe2f00b.png

上面3张图片就是我参数化的操作及思路,首先我们在测试集合中每个测试用例都有一个对应的id,然后我们在需要参数化的那个测试用例中去找我们在之前的那个用例中需要响应中的哪些参数,然后以固定的格式进行请求就OK了!

header参数化

header参数化同理,也是一样的操作。公司的研发人员为了接口的安全性考虑,不能让随便那个人都有权限进行接口执行,肯定会设置一定的权限,所以就肯定会涉及到token,但是token又有一定的时效性,所以我们就要想啊,这个token是哪里来的,后面的接口怎么引用的。

以我们公司的项目为例,有权限的接口里面的token都是以一下方式实现的

https://i-blog.csdnimg.cn/blog_migrate/b8886ff4be2777efae8bfbdae688983a.png

存在header中,对应key:Authorization,value为:Bearer +token

token呢,又是在登录后拿到的,我找到登录接口,对登录接口的响应数据进行分析 https://i-blog.csdnimg.cn/blog_migrate/8e52d841741a8151bc605ec60750613a.png

是对应在body的access_token中,所以就有了下面的参数化

https://i-blog.csdnimg.cn/blog_migrate/7af511618c92baa6e13b85a30dfd2bdf.png

就此我们的参数化完成

另外,还有一点,我们总体的生成的阶段性测试报告在这个蓝色的地址中

https://i-blog.csdnimg.cn/blog_migrate/8b0f0b06268e2d77abba993206c05b2b.png

https://i-blog.csdnimg.cn/blog_migrate/168244ef15b495e6d951dea36cf2fcd6.png

注意:我这里踩了一个坑,我加了一个新的环境配置,每当我手动批量执行用例时,选择对应的环境,都可以成功,但是看我总体的测试报告的时候却失败了,经过分析,原来是我的自动化参数的环境没有在默认环境的位置,所以我就直接把这个有参数的环境拖到最上面,让他变成默认环境,就此OK~! https://i-blog.csdnimg.cn/blog_migrate/6fde31acec1ec22b63321950c83516bc.png

Jenkins中集成构建

Jenkins这个工具公司内部也一直在用,不管是研发还是测试,后面可能还会实现自动化部署线上(运维)。

大家不清楚这个工具的话,可以自行百度哈,多多了解没有坏处。

第一步: 在Jenkins中安装需要的插件, Groovy Postbuild,后面配置的时候需要

https://i-blog.csdnimg.cn/blog_migrate/41eada0b51507818f9fefb9ef1a7f21d.png

第二步: 新建一个项目,自由风格就行,在进行配置 https://i-blog.csdnimg.cn/blog_migrate/2de92c8179eb07577df6923fbfba28cf.png

第三步: 构建模块中选择:Execute shell

https://i-blog.csdnimg.cn/blog_migrate/6cf596a404147eef0aef00d1d9d5a53f.png

填入一下内容,目的是创建一个文件夹,文件夹以时间节点为名称,且将执行后的测试报告保存在这个文件夹中。

FN=`date +%Y%m%d%H%M%S`
mkdir $FN
curl -o ./$FN/能耗.html "http://192.168.4.240:3001/api/open/run_auto_test?id=140&token=51aee1fccc6b30767b24021351b0edae8ed1d8dd97b5ac5e2c8a9bd2829f292e&mode=html&email=false&download=false"

第四步: 构建后操作,选择刚刚我们新加的插件:Groovy Postbuild

https://i-blog.csdnimg.cn/blog_migrate/7e1de9d346254efd4fc4972274f4bcb2.png

填写一下代码,由于直接生成的报告格式显示错乱,需要格式化生成的报告

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")

https://i-blog.csdnimg.cn/blog_migrate/6ceeb3dcd63c07553bc99d3a09d76e3f.png

yapi中实现自动化接口测试后(包括请求参数化,header参数化),在Jenkins中集成构建就此结束,欢迎大家多多纠正,谢谢!