前言
这是一个给测试小白用的“自动化用例”的工具跟代码,大神们看了别见笑。纯属学习用的。
为啥叫接口自动化用例工具
当然就是导入我们常规写的用例excel,然后他就会咻咻咻~~~的把所有的用例接口跑一遍,然后我们就坐着等,完成后他就会打印出文本,我们就可以在文本查看各种请求状态 如:“接口成功或失败”,“断言结果”,“异常状态”,“各个接口的返回结果”
我们先来看下这个工具使用结果,不然大家一脸懵逼的不知道我在说啥,也不知道干啥用的。
我们先来看下用例表:如上图,我们把接口一行行的写上去,然后打开我们的工具如下图:
我们看到就是点击开始执行,结束后自动生成文件,从gif上我们可以看到,我们对登陆接口进行压测,对测试接口进行普通测试,他就会分别打印对应的文本,也可以直接从抓包工具直接可以看具体信息。
看到这如果你有感兴趣的话,我们就来开始讲解如何使用
使用说明:
1、运行程序
2、界面说明:
从这张图片里,我们唯一看不懂的就是那个 “是否启动关联顺序请求” 是吧。
什么是关联顺序,就是我们有时候第一个接口请求完成后,第二个接口要拿第一个接口里的参数,比如:我第一个接口为登陆接口,登陆完成后,要把Token值给第二个接口使用。这时候我们就要勾选“是否启动关联请求”。
3、我们先来说下3种模式、普通模式、压测模式、关联顺序模式。
普通模式:
就是不要去勾选那个关联顺序请求,然后设置下并发数量,也不要设置太多,尽量选择合适的值来设置。
缺点就是我们的所有值都是写死的。如果要动态取值,那么就用“关联顺序”
压测模式:
有人就疑问,压测哪里开启,其实就是在用例表开启,我们先来看下用例表,从下图我们可以看到有个“压测”,输入值,他就会对这个接口进行压测,里面有备注就不在说明了关联顺序模式:
关联顺序模就是勾选那个框框,然后并发数量就会失效,因为我们是取指定接口的值,所以只能按顺序从第一个接口慢慢请求完成,如果哪个接口取值失败,就会中断,在文本会打印出哪个序号下的接口发生中断,检测用例表填写规则跟接口返回参数是否符合你的要求,如何取哪接口的值,我们会叫用例表使用里面说明。
4、三大模式讲完了,我们就来讲解下最重要的部分,那就是用例表的使用
这个会比较复杂点,但是如果你了解了使用方法,其实很简单的。无非就是复制粘贴,改改字段值,特别是公司接口模式都是差不多的。首先我们来看下完整的用例表:
先从表名开始
我们左下角有个2个表,一个是“测试”,一个“顺序”,这名字是随便取的,但不要有重复的,避免错误。我们每次执行只会执行一个表的接口,不能执行全部的表。
然后我们来看各个列的值,其实里面一些特殊用法都有备注
(1) 序号:最好按顺序来,用于标志是哪个接口
(2) 接口说明:这个就不说了
(3) Url:这个也不说了
(4) Header:这个也不说了,如果Hearder有用到动态值,那么就参考【关联顺序】的使用,后面会统一讲解
(5) Http:这个目前只支持get跟post(包含表单,跟json模式)暂不支持上传文件跟图片之类的,后续补充,谢谢。
传值就固定3种 : get、post_form和post_json
post_form就是post的表单模式,post_json就是post提交json模式
(6) json:就是Http要设置post_json模式,然后在json列直接把整串json复制进去就可以了。
(7) 字段:就是Http设置get或者post_form才能使用,post_json模式就不用填写这一列了。当然咯get或者post_form就不用填写json那一列了。我们先来看图片如何设置的:
这一看我们就懂了吧,哪个字段等于哪个值。很明显【注意:】2个字段直接要用换行来处理,不然会出现问题,至于怎么换行自己百度excel怎么换行,windows是Alt+Enter ,Mac我就不知道了。至于我们要动态取值,还是那句话跟Header一样,我们后面会统一在参【关联顺序】的使用,后面会统一讲解
(7) 压测:写法就是 1000,10 第一个为要压测的总数量,第二个为并发数量
(8) 断言:
这个就比较复杂了点,跟后面的【关联顺序】有的类似、
这里的断言有2种,1种是指定返回的字段等于某个值,第2种就是指定返回的字段等于数据库的哪个值,我们先来看下图片
我们可以看到多个断言条件就是跟字段的一样,用换行来处理。
我们先假设返回的json为
{
"mobile": "15000000000",
"User": {
"name ": "张三",
"info ": "xxxxxxx"
},
"sites": [{
"pageIndex": 2,
"pageSize": 6
}, {
"pageIndex": 1,
"pageSize": 6
}]
}
我没一条条条件来说明:
首先:
1、mobile = 15000000000 看下就知道就是一层的mobile等于啥值
2、User,name = 张三 我们通过“,”来代表下一层数据,,就是User里面的name值
3、sites[1],pageIndex = 1 /4、 就sites是数组,取出第一层的sites的第2个数组值里的pageIndex值
4、还有一种情况就是最外层是一个数组,我们备注里面也说了用 [0],User,name这样的方式,第一个数组里面的User里面的name值
5、最后一个:sites[1],pageIndex = 数据库(特步,shujuku[5],user,name)
前面的取字段我们就不管了,已经说了,来说等号后面 “ 数据库(特步,shujuku[5],user,name) ” 可能一脸懵逼,我们先来看下数据表的excel
意思是:工作簿表为“特步”(可以理解为,当前项目是特步)
序号为“1”,数据库名字为“shujuku”,表名“user”,字段“name”
这样是不是就能理解了。
到里面可以先尝试下怎么操作,可以试下普通测试,跟压力测,我都一份测试数据,你们可以在那份测试数据进行修改就可以了。
5、接下来我们来讲“关联顺序请求”
其实用法都一样,唯一区别就是界面要勾选“是否关联顺序请求”
其二就是Header、json、字段 会存在动态获取值。所以我们加了一个标识符,,那就是【】,有【】就会代表需要动态取值,然后括号里面的内容写法就是跟断言的写法一样,只是第一个要序号。
假如:我们要取接口10的返回json串的User下的name值:
则用【10,User,name】,如果含有数组,则,【10,User[0],name】如果最外层就是个数组则使用【10,[0],User,name】
如果需要时间戳:则使用【时间戳】,就会获取当前的时间戳,单位为秒。
比如Heard
Content-Type:application/json; charset=utf-8;time=【时间戳】
比如Json
{
"password": "e10adc3949ba59abbe56e057f20f883e",
"mobile": 【1,user,_id】
}
比如字段:
appId = 【1,user,_id】
timestamp = 【时间戳】
sign = 44f443aa92f30f03ae0fff00eaa80a24