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

article/2025/6/9 15:06:26

目录

一、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文件,可以预览得到如下情况:

运行正常情况如下:


http://www.hkcw.cn/article/fKwuhQVicD.shtml

相关文章

学习路之PHP--easyswoole使用视图和模板

学习路之PHP--easyswoole使用视图和模板 一、安装依赖插件二、 实现渲染引擎三、注册渲染引擎四、测试调用写的模板五、优化六、最后补充 一、安装依赖插件 composer require easyswoole/template:1.1.* composer require topthink/think-template相关版本: "…

【C++高并发内存池篇】性能卷王养成记:C++ 定长内存池,让内存分配快到飞起!

📝本篇摘要 在本篇将介绍C定长内存池的概念及实现问题,引入内存池技术,通过实现一个简单的定长内存池部分,体会奥妙所在,进而为之后实现整体的内存池做铺垫! 🏠欢迎拜访🏠&#xff…

前端验证下跨域问题(npm验证)

文章目录 一、背景二、效果展示三、代码展示3.1)index.html3.2)package.json3.3) service.js3.4)service2.js 四、使用说明4.1)安装依赖4.2)启动服务器4.3)访问前端页面 五、跨域解决方案说明六…

nginx+Tomcat负载均衡群集

目录 一. LVS,HAProxy,Nginx的区别 1. 核心区别 2. 负载均衡算法对比 2. 1 LVS 负载均衡算法 2.2 HAProxy 负载均衡算法 2.3 Nginx 负载均衡算法 2.4 总结 二. 案例分析 1. 案例概述 (1) Tomcat 简介 (2)应用场景 2. 案例环境 3. 案例实施 …

WSL安装及使用 (适用于 Linux 的 Windows 子系统)

WSL简介 WSL:适用于 Linux 的 Windows 子系统,有1和2两个版本,1是windows重新实现了linux接口,2是原生linux内核。目前 WSL2 为默认模式,兼容性和性能更好。 wsl中文官网 安装 确保以下功能开启: 控制面…

JavaSec | SpringAOP 链学习分析

目录: 链子分析 反向分析 正向分析 poc 构造 总结 链子分析 反向分析 依赖于 Spring-AOP 和 aspectjweaver 两个包,在我们 springboot 中的 spring-boot-starter-aop 自带包含这俩类,所以也可以说是 spring boot 的原生反序化链了,调用…

PV操作的C++代码示例讲解

文章目录 一、PV操作基本概念(一)信号量(二)P操作(三)V操作 二、PV操作的意义三、C中实现PV操作的方法(一)使用信号量实现PV操作代码解释: (二)使…

医疗内窥镜影像工作站技术方案(续)——EFISH-SCB-RK3588国产化替代技术深化解析

一、异构计算架构的医疗场景适配 ‌多核任务调度优化‌ ‌A76/A55协同计算‌:4Cortex-A762.4GHz负责AI推理(如息肉识别算法),4Cortex-A551.8GHz处理DICOM影像传输协议,多任务负载效率比赛扬N系列提升80%‌NPU加速矩阵…

HCIP-Datacom Core Technology V1.0_3 OSPF基础

动态路由协议简介 静态路由相比较动态路由有什么优点呢。 静态路由协议,当网络发生故障或者网络拓扑发生变更,它需要管理员手工配置去干预静态路由配置,但是动态路由协议,它能够及时自己感应网络拓扑变化,不路由选择…

敏捷转型:破局之道

在数字化浪潮与市场不确定性加剧的背景下,传统组织向敏捷组织转型已成为企业生存与发展的核心命题。这种转型并非简单的工具迭代或流程优化,而是涉及治理结构、文化基因与人才机制的深度重构。理解两种组织形态的本质差异,明确转型的适用场景…

WordPress 6.5版本带来的新功能

WordPress 6.5正式上线了!WordPress团队再一次为我们带来了许多新的改进。在全球开发者的共同努力下,WordPress推出了许多新的功能,本文将对其进行详细总结。 Hostease的虚拟主机现已支持一键安装最新版本的WordPress。对于想要体验WordPres…

软硬解锁通用Switch大气层1.9.0系统+20.0.1固件升级 图文教程 附大气层大气层固件升级整合包下载

软硬解锁通用Switch大气层1.9.0系统20.0.1固件升级 图文教程 附大气层大气层固件升级整合包下载 大气层(Atmosphere)是为任天堂 Switch 主机开发的免费开源自定义固件(CFW),由开发者 SciresM 领导的团队维护。它允许用…

Redisson学习专栏(五):源码阅读及Redisson的Netty通信层设计

文章目录 前言一、分布式锁核心实现:RedissonLock源码深度解析1.1 加锁机制:原子性与重入性实现1.2 看门狗机制:锁自动续期设计1.3 解锁机制:安全释放与通知1.4 锁竞争处理:等待队列与公平性1.5 容错机制:异…

字节新出的MCP应用DeepSearch,有点意思。

大家好,我是苍何。 悄悄告诉你个事,昨天我去杭州参加字节火山方舟举办的开发者见面会了,你别说,还真有点刘姥姥进大观园的感觉🐶 现场真实体验完这次新发布的产品和模型,激动的忍不住想给大家做一波分享。…

光耦电路学习,光耦输入并联电阻、并联电容,光耦输出滤波电路

一般的光耦电路,只需要输入限流电阻,输出上拉电阻即可。 实际使用时,比如工控等一些干扰大、存在浪涌电压等的场合,根据实际可以添加一些抗干扰电路、滤波电路,增加电路抗干扰能力。 比如: 1、给光耦输入两…

JVM知识

目录 运行时数据区域 程序计数器 Java虚拟机栈 局部变量表 操作数栈 动态链接 本地方法栈 Java堆 方法区 运行时常量池 字符串常量池 直接内存 Java对象的创建过程 对象的内存布局 对象的访问 常见的 GC 类型 ​​Minor GC(Young GC)​ …

Spring AI介绍及大模型对接

目录 1. Spring AI介绍 2. Spring AI常用组件 2.1. Chat Client API 2.2. Models 2.3. Vector Databases 2.4. RAG 2.5. MCP 3. 大模型对接举例 3.1. 获取deepseek的API keys 3.2. idea创建工程 3.3. 配置application.yml 3.4. 编写Controller测试类 3.5. 验证Con…

C++算法训练营 Day6 哈希表(1)

1.有效的字母异位词 LeetCode:242.有效的字母异位词 给定两个字符串s和t ,编写一个函数来判断t是否是s的字母异位词。 示例 1: 输入: s “anagram”, t “nagaram” 输出: true 示例 2: 输入: s “rat”, t “car” 输出: false 解题思路&#xff…

LeetCode hot100-11

题目描述 题目链接:滑动窗口最大值 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1: 输入…

js web api阶段

一.变量声明 1.JS中的const const在js修饰数组和对象,本质类似与c的引用数据类型,所以类似于 int* const ref 修饰的是地址,值是可以改变的 然后下面这种情况是禁止的 左边这种都有括号,说明是建立了一个块新地址去存放&#xf…