Postman如何循环遍历数组并将metersToNextBollard值存入环境变量
Postman 环境变量存储实现方案
场景1:响应直接返回目标数组
你的硬编码方案可以通过索引-变量名映射表+循环优化,后续新增/修改变量只需调整映射表即可,无需重复写赋值语句:
pm.test("Response is ok", function () { pm.response.to.have.status(200); }); const resBody = pm.response.json(); // 定义索引和对应环境变量名的映射,按需新增/修改即可 const indexVarMap = [ {index: 0, varName: "LT1-B1 MCA Afstand"}, {index: 18, varName: "LT-B19 MCA Afstand"}, {index: 19, varName: "DBF-D15 MCA Afstand"} ]; // 循环赋值 indexVarMap.forEach(item => { pm.environment.set(item.varName, resBody[item.index]?.metersToNextBollard); });
如果你需要把数组所有元素的metersToNextBollard都存到环境变量,不需要指定特定变量名,可以直接遍历数组:
resBody.forEach((item, index) => { pm.environment.set(`bollard_${index}_meters`, item?.metersToNextBollard); });
场景2:目标数组嵌套在bollards字段下
只需调整数组获取路径即可,同时你可以直接复用响应里的description字段作为变量名前缀,无需手动维护映射表:
pm.test("Response is ok", function () { pm.response.to.have.status(200); }); const resBody = pm.response.json(); const bollardsArr = resBody.bollards; // 方案1:沿用索引映射表的方式,仅修改数组源 const indexVarMap = [ {index: 0, varName: "LT1-B1 MCA Afstand"}, // 其余映射按需补充 ]; indexVarMap.forEach(item => { pm.environment.set(item.varName, bollardsArr[item.index]?.metersToNextBollard); }); // 方案2:直接用description字段生成变量名,适配所有元素 bollardsArr.forEach(item => { const varName = `${item.description} MCA Afstand`; pm.environment.set(varName, item?.metersToNextBollard); });
注:代码中使用
?.可选链操作符是为了避免数组元素为空时脚本报错,如果你使用的Postman版本不支持可选链,可以换成&&判断:(bollardsArr[item.index] && bollardsArr[item.index].metersToNextBollard)
内容的提问来源于stack exchange,提问作者Aimee Chaves
相关产品推荐
相关产品推荐

