立志成为一名优秀测试开发工程师(第十一天)—Postman动态参数/变量、文件上传、断言策略、批量执行及CSV/JSON数据驱动测试

目录

一、Postman接口关联与正则表达式应用

1.正则表达式解析

2.提取鉴权码。

二、Postman内置动态参数以及自定义动态参数

1.常见内置动态参数:

2.自定义动态参数:

3."编辑"接口练习

三、图片上传

1.文件的上传

2.上传后内容的验证

四、postman的断言

1.常见断言

2.在断言中获取动态参数(全局变量)的方法

3.全局断言

五、批量运行测试用例

六、postman中使用CSV、Json文件实现数据驱动


一、Postman接口关联与正则表达式应用

1.正则表达式解析

接口关联方式:

①使用json提取器实现接口关联(上期已讲过)

②使用正则表达式实现接口关联

javascript 复制代码
var result = responseBody.match(new RegExp('"access_token":"(.*?)"'));

responseBody 是 Postman 内置变量,表示当前请求返回的响应体内容(通常为 JSON 字符串)。通过 match() 方法匹配正则表达式,返回包含匹配结果的数组。

正则表达式细节

new RegExp('"access_token":"(.*?)"') 动态创建正则表达式对象:

  • "(.*?)" 为非贪婪模式匹配双引号内的任意字符(即 access_token 的值)
  • () 表示捕获组,提取括号内内容到结果数组

返回值结构:匹配成功时返回数组示例:

javascript 复制代码
[
  '"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]);

javascript 复制代码
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文件,可以预览得到如下情况:

运行正常情况如下:

相关推荐
愿你天黑有灯下雨有伞6 小时前
MyBatis-Plus LambdaQuery 高级用法:JSON 路径查询与条件拼接的全场景解析
mysql·json·mybatis
代码续发8 小时前
postman自动化测试
测试工具·postman
wtsolutions12 小时前
JSON to Excel 3.0.0 版本发布 - 从Excel插件到Web应用的转变
json·excel·json-to-excel·wtsolutions
MX_935914 小时前
JSON基础知识
开发语言·javascript·json
再学一点就睡1 天前
JSON Schema:禁锢的枷锁还是突破的阶梯?
前端·json
什么都想学的阿超1 天前
【PostgreSQL 02】PostgreSQL数据类型革命:JSON、数组与地理信息让你的应用飞起来
数据库·postgresql·json
黄油奥特曼1 天前
Sublime Text 4格式化JSON无效的解决方法
json·sublime·pretty json
趣浪吧2 天前
【JSON-to-Video】设置背景视频片断
json·aigc·音视频·视频
哆咪学计科2 天前
postman工具使用
测试工具·postman