立志成为一名优秀测试开发工程师(第十一天)—Postman动态参数/变量、文件上传、断言策略、批量执行及CSV/JSON数据驱动测试
目录
一、Postman接口关联与正则表达式应用
1.正则表达式解析
2.提取鉴权码。
二、Postman内置动态参数以及自定义动态参数
1.常见内置动态参数:
2.自定义动态参数:
3.“编辑”接口练习
三、图片上传
1.文件的上传
2.上传后内容的验证
四、postman的断言
1.常见断言
2.在断言中获取动态参数(全局变量)的方法
3.全局断言
五、批量运行测试用例
六、postman中使用CSV、Json文件实现数据驱动
一、Postman接口关联与正则表达式应用
1.正则表达式解析
接口关联方式:
①使用json提取器实现接口关联(上期已讲过)
②使用正则表达式实现接口关联
var result = responseBody.match(new RegExp('"access_token":"(.*?)"'));
responseBody
是 Postman 内置变量,表示当前请求返回的响应体内容(通常为 JSON 字符串)。通过 match()
方法匹配正则表达式,返回包含匹配结果的数组。
正则表达式细节
new RegExp('"access_token":"(.*?)"')
动态创建正则表达式对象:
"(.*?)"
为非贪婪模式匹配双引号内的任意字符(即access_token
的值)()
表示捕获组,提取括号内内容到结果数组
返回值结构:匹配成功时返回数组示例:
['"access_token":"abc123"', // 完整匹配项(result[0])'abc123' // 第一个捕获组的值(result[1])
]
2.提取鉴权码。
左边部分即做左边键,右边部分即是右边键修改格式后放进括号内:
console.log(result[1]);
console.log("0的位置是:",result[0]) 指定输出获取相应的值
实际应用:将提取的 token 存入 Postman 全局变量:
//设置为全局变量:
pm.globals.set("access_token",result[1]);
pm.globals.set("access_token", result[1]);
此操作可用于后续接口的鉴权请求,通过 {{access_token}}
直接调用该值。
二、Postman内置动态参数以及自定义动态参数
1.常见内置动态参数:
{{$timestamp}} 生成当前时间的时间戳
{{$randomInt}} 生成0-1000之间的随机数
{{$guid}} 生成速记GUID字符串
2.自定义动态参数:
①先在Pre-request中创建全局变量
②创建后先在全局变量中查看是否创建成功,若成功在Body中就可以直接使用了
③得到相应响应体:
3.“编辑”接口练习
①进入我们的微信公众平台,找到用户管理,使用编辑标签接口,新建请求,将信息填入
qhttps://api.weixin.qq.com/cgi-bin/tags/update?access_token=ACCESS_TOKEN
②回到我们的创建标签接口,使用正则表达式获取了id之后,将其设置为全局变量:
③回到我们新建的编辑请求中,根据id编辑标签名称,易知使用json格式传参,将获取到的全局变量tag_id带进去,即可实现编辑功能
三、图片上传
同样在微信公众平台获取到图片上传的url:
https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN
1.文件的上传
文件的上传使用form-data,键名必须是media,格式选择File,然后选择文件上传
2.上传后内容的验证
上传后得到响应信息,即图片的url,输入到浏览器中即可查看检验上传的图片,注意url中会存在转义符,要去掉多余的‘\’
四、postman的断言
1.常见断言
Status code: Code is 200 检查返回的状态码为200
Response body:Contains string 检查响应中包含指定字符串
Response body:is equal to a string 检查响应中等于一个字符串
Response headers :Content-type 检查包含响应头Content-type
Response time is less than 200ms :检查请求耗时小于200ms
例如:
2.在断言中获取动态参数(全局变量)的方法
拿上面新建的全局变量times举例,以下三种方式均可获得times相关断言
pm.globals.get(“times”)
globals[“times”]
globals.times
3.全局断言
比如说,状态断言基本上每个请求都是用的差不多的,即可设置为全局变量
步骤:
右键点击collection,选择编辑,然后将要加入到全局断言的断言剪切到collection的test中,不知道是不是因为小编的postman版本不同,小编一直找不到collection的编辑在哪,故而略过
五、批量运行测试用例
选中collection右键运行,即可编辑运行配置,其中iteration表示迭代次数,delay则是延迟时间,配置完成后点击run即可运行
六、postman中使用CSV、Json文件实现数据驱动
postman数据驱动之csv、json, 二者其实只是数据格式不同
以下内容基于该接口(获取token)实现:https://{{ip}}/cgi-bin/token?grant_type=client_credential&appid=a&secret=b
以下是我的例子,关键的数值我用a.b替代了
40002、41002、41004分别是这三个值grant_id,appid,secret各自为空时出现的状态码
CSV:
“grant_id,appid,secret,assert_value
client_credential,a,b,access_token
,a,b,40002
client_credential,,b,41002
client_credential,a,,41004
”
Json:
[
{"grant_type":"client_credential","appid":"a","secret":"b","assert_value":"access_token"},
{"grant_type":"","appid":"a","secret":"b","assert_value":40002},
{"grant_type":"client_credential","appid":"","secret":"b","assert_value":41002},
{"grant_type":"client_credential","appid":"a","secret":"","assert_value":41004},
]
上面两个文件任意一个编辑保存好之后,进入“获取token”的请求,使用全局变量,编辑参数
确保它在collection中
启动collection,编辑运行配置,选择csv或者json文件,可以预览得到如下情况:
运行正常情况如下: