当前位置: 首页 > news >正文

立志成为一名优秀测试开发工程师(第十一天)—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文件,可以预览得到如下情况:

运行正常情况如下:

相关文章:

  • Nginx 配置视频文件播放指南
  • TitanIDE智算版:一键开启云端算法开发环境
  • Qt企业级串口通信实战:高效稳定的工业级应用开发指南
  • QUIC——UDP实现可靠性传输
  • DeepSeek眼中的文明印记:山海经
  • 软件评测师 案例真题笔记
  • 黑马程序员TypeScript课程笔记3
  • 电脑安装系统蓝屏的原因
  • 【相机基础知识与物体检测】更新中
  • CMS32M65xx/67xx系列CoreMark跑分测试
  • 应用智能化转型—MCP原理分析
  • dvwa7——SQL Injection
  • MyBatis 的动态 SQL
  • 【Java实用工具类】手撸SqlBuilder工具类,优雅拼接动态SQL,MyBatisPlus同款风格!
  • mybatis打印完整的SQL,p6spy
  • LeetCode 高频 SQL 50 题(基础版) 之 【高级查询和连接】· 下
  • SQL思路解析:窗口滑动的应用
  • 剑指offer15_数值的整数次方
  • JavaScript性能优化实战:从核心原理到工程实践的全流程解析
  • java反序列化:CC5利用链解析
  • 企业网站开发要多少钱/seo最新技巧
  • 做安装系统网站有钱赚吗/成都seo专家
  • 做配音的网站/刷评论网站推广
  • html5微网站开发教程/阿里云建站
  • 美食分享网站怎么做/唐山seo优化
  • 个人网站的设计的现状/百度指数数据下载