如何在Postman中循环使用数组变量发送多份POST请求
解决方法:用全局数组+请求循环实现多批次POST请求
不用CSV的话,靠Postman全局变量+setNextRequest完全能实现你的需求,按以下步骤操作:
1. 完善预请求脚本:初始化数组与索引
替换你现有的预请求脚本,确保不仅组装数组,还要加索引变量跟踪执行进度:
// 取出预设的两个变量值 const group1 = pm.globals.get("newGroupTypeToCreate"); const group2 = pm.globals.get("newGroupTypeToCreateToDelete"); // 组装数组并存为全局变量(数组要转成字符串存储) pm.globals.set("newGroupTypeList", JSON.stringify([group1, group2])); // 初始化当前执行索引(第一次从0开始) if (!pm.globals.get("currentIndex")) { pm.globals.set("currentIndex", 0); } // 取出当前要用的name值,存为临时变量供请求Body调用 const list = JSON.parse(pm.globals.get("newGroupTypeList")); const currentName = list[pm.globals.get("currentIndex")]; pm.globals.set("currentGroupName", currentName);
2. 配置请求Body
在POST请求的Body中,直接用{{currentGroupName}}作为name参数的值。比如JSON格式的Body:
{ "name": "{{currentGroupName}}", // 其他参数保持原有配置即可 }
3. 编写测试脚本:控制请求循环
在请求的Tests标签中添加以下代码,用来判断是否继续执行下一次请求:
// 取出数组和当前索引 const list = JSON.parse(pm.globals.get("newGroupTypeList")); let currentIndex = parseInt(pm.globals.get("currentIndex")); // 索引自增,准备下一次请求 currentIndex++; pm.globals.set("currentIndex", currentIndex); // 判断是否还有未执行的元素:有就继续调用当前请求,没有就终止循环并重置索引 if (currentIndex < list.length) { pm.setNextRequest(pm.info.requestName); // 直接复用当前请求名称,无需手动修改 } else { pm.globals.unset("currentIndex"); // 循环结束后清空索引,方便下次重新执行 pm.setNextRequest(null); // 终止后续请求 }
关键注意点
- 必须把请求放到**集合(Collection)**中执行,
setNextRequest仅在集合运行时生效,单独点单个请求的「Send」不会触发循环。 - 执行时点击集合的「Run」按钮,而不是单个请求的发送按钮。
- 如果需要重新执行,先检查全局变量里的
currentIndex是否已被清空,若没清空手动删除即可。
内容的提问来源于stack exchange,提问作者Vladislav
相关产品推荐
相关产品推荐

