如何在Postman Runner中提取响应ID生成关联邮箱的CSV用于后续接口?
问题:Postman Runner批量执行后提取响应生成关联CSV
我正在用Postman Runner批量执行POST接口 https://some.abc.xyz/users,请求体为:
{"email": "{{email}}"}
通过CSV文件为Runner传入邮箱值,示例CSV如下:
email 43mn@email.com 44mn@email.com
每次请求成功创建用户后,返回响应格式为:
{"id": "123"}
当前流程运行正常,我需要提取每个响应中的id,生成包含email和userId列的新CSV(格式如下),用于后续通过Runner调用另一个更新接口,请问如何实现?
email,userId 43mn@email.com,123 44mn@email.com,456
实现步骤
- 步骤1:在请求Tests中添加数据暂存脚本
打开创建用户的POST请求,切换到「Tests」标签页,添加以下脚本。它会解析响应的id,结合当前迭代的email参数,把数据累积存储到Postman全局变量中:
// 解析响应JSON数据 const resData = pm.response.json(); // 获取当前迭代的email参数值 const currentEmail = pm.iterationData.get("email"); // 读取全局变量中已存储的用户列表,无数据则初始化空数组 let userRecords = pm.globals.get("userRecords") ? JSON.parse(pm.globals.get("userRecords")) : []; // 将当前用户的email和userId加入数组 userRecords.push({ email: currentEmail, userId: resData.id }); // 更新全局变量,存储最新的用户列表 pm.globals.set("userRecords", JSON.stringify(userRecords));
- 步骤2:批量执行完成后导出CSV
等Runner跑完所有请求后,打开Postman的「控制台」(Console),输入并执行以下代码,控制台会输出格式化好的CSV内容:
// 读取全局变量中的用户数据 const userRecords = JSON.parse(pm.globals.get("userRecords")); // 构建CSV表头 let csvOutput = "email,userId\n"; // 循环拼接每一行数据 userRecords.forEach(item => { csvOutput += `${item.email},${item.userId}\n`; }); // 打印CSV内容 console.log(csvOutput);
复制控制台里的输出内容,粘贴到记事本或其他文本编辑器,保存为.csv文件即可直接用于后续Runner调用。
- 步骤3:清理全局变量(可选)
导出完成后,建议清理全局变量避免干扰后续操作,在控制台执行:
pm.globals.unset("userRecords");
内容的提问来源于stack exchange,提问作者boomslaw
相关产品推荐
相关产品推荐

