Postman循环运行请求时shift未生效,仅执行数组首个值问题排查
Postman循环请求遍历数组失败问题修复
问题根源
你当前的脚本每次运行请求时,都会重新定义serials和chipIds数组——这意味着每次执行都是从初始的完整数组里shift第一个元素,用完后数组就被销毁了,下一次请求又会重新创建新的数组,自然永远只跑第一个值。
修复方案
把数组存到环境变量里(全局变量也可以,根据你的需求选),让数组的状态在请求循环中持久化。具体步骤如下:
先在Postman的环境变量里初始化两个数组:
- 添加
serials变量,值设为["C055UG44612513","C055UG44612514"] - 添加
chipIds变量,值设为["38726716169857247275117912511","38726716169857247275117912512"]
- 添加
修改请求脚本为:
// 从环境变量中获取数组,解析成JSON格式 let serials = JSON.parse(pm.environment.get('serials')); let chipIds = JSON.parse(pm.environment.get('chipIds')); // 取第一个元素设置为当前请求变量 pm.variables.set('currentSerial', serials.shift()); pm.variables.set('currentChipId', chipIds.shift()); // 更新环境变量里的数组状态 pm.environment.set('serials', JSON.stringify(serials)); pm.environment.set('chipIds', JSON.stringify(chipIds)); // 判断是否继续循环 if (serials.length > 0 && chipIds.length > 0) { pm.execution.setNextRequest("Register_device1"); } else { pm.execution.setNextRequest(null); // 可选:循环结束后重置数组,方便下次直接运行集合 pm.environment.set('serials', JSON.stringify(["C055UG44612513","C055UG44612514"])); pm.environment.set('chipIds', JSON.stringify(["38726716169857247275117912511","38726716169857247275117912512"])); }
关键说明
- Postman的脚本每次运行都是独立的,本地定义的变量不会跨请求保留,必须用环境/全局变量存储需要持久化的数据。
- 环境变量只能存字符串类型,所以存储数组时要转成JSON字符串,读取时再解析回数组。
内容的提问来源于stack exchange,提问作者Pulkit Agrawal
相关产品推荐
相关产品推荐

