首页 > 解决方案 > 使用邮递员在多个循环中设置环境变量

问题描述

我想测试以下工作流结构。

在第一个请求脚本中,

var st = [1,2,3]
var i = st.length;
for(var j=0; j<i; j++) {
    pm.environment.set("id", st[j]);
    postman.setNextRequest("getNext");
};

在 getNext 预测试脚本中,

var id = pm.environment.get("id");
console.log(`Run ${id}`);

在控制台中,仅Run 3显示消息。

问题是 env 变量被最后一个元素覆盖。而且我只能看到列表的最后一个元素,并且请求正在使用最后一个元素。

我想知道如何保持环境变量不被覆盖?

编辑 我删除了我凌乱的问题并添加了简单的工作流程。

标签: automated-testspostmanpostman-collection-runnerpostman-pre-request-script

解决方案


postman.setNextRequest()总是在当前请求结束时执行。这意味着如果您将此函数放在预请求或测试脚本中的任何其他代码块之前,这些块仍将执行。

这意味着,循环运行 3 次,并且仅在最后,当完整的脚本完成时,它会调用postman.setNextRequest(), whenid具有 value 3

有关更多详细信息,请参阅文档

找到这篇博文,解释如何实现它:https ://ambertests.com/2019/01/28/postman-how-to-dynamic-iteration-within-a-collection/


推荐阅读