如何在Postman中结合CSV文件按指定次数运行集合内不同请求
如何在Postman中结合CSV文件按指定次数运行集合内不同请求
嘿,我刚好碰到过类似的需求,给你两个实用的方案,都能完美实现你想要的效果:先跑4次GetAge请求,再跑2次GetInfoCity请求,同时用上你的CSV数据。
方案一:用集合级脚本控制请求执行(推荐)
这个方案不需要修改原CSV,靠脚本判断迭代次数来决定执行哪个请求,步骤很清晰:
- 保持你原有的CSV文件不变,它有4行有效数据(包括表头):
Name,City Jhon,New York Lucy,London Adam, Alex, - 打开Postman的集合运行器(Collection Runner),选中你的目标集合,上传这个CSV文件,然后把迭代次数设置为6次(4次GetAge + 2次GetInfoCity)。
- 给你的集合添加预请求脚本(注意是集合级的,不是单个请求的),用来控制每个迭代里哪些请求能执行:
// 获取当前迭代的索引(从0开始计数) const iterationIndex = pm.info.iteration; // 获取当前要执行的请求名称 const currentRequest = pm.request.name; // 前4次迭代(索引0-3)只允许执行GetAge if (iterationIndex < 4 && currentRequest !== "GetAge") { pm.execution.skipRequest(); // 跳过当前请求 } // 后2次迭代(索引4-5)只允许执行GetInfoCity else if (iterationIndex >= 4 && currentRequest !== "GetInfoCity") { pm.execution.skipRequest(); // 跳过当前请求 } - 直接运行集合就行啦:前4次迭代会自动跳过
GetInfoCity,只跑GetAge并依次用CSV里的4个Name值;后2次迭代会跳过GetAge,跑GetInfoCity(用CSV里第3、4行的City值,哪怕是空的也会正常传入)。
方案二:调整CSV结构配合请求脚本
如果你觉得脚本判断迭代次数有点绕,也可以通过调整CSV的结构,让请求根据数据是否存在来决定是否执行:
- 修改你的CSV文件,改成6行:前4行保留原数据,后2行只填
City(或者用你需要的城市值),Name留空:Name,City Jhon,New York Lucy,London Adam, Alex, ,New York ,London - 给
GetAge请求添加预请求脚本:如果当前迭代的Name为空,就跳过这个请求:if (!pm.variables.get("Name")) { pm.execution.skipRequest(); } - 给
GetInfoCity请求添加预请求脚本:如果当前迭代的City为空,就跳过这个请求:if (!pm.variables.get("City")) { pm.execution.skipRequest(); } - 打开集合运行器,上传修改后的CSV,设置迭代次数为6次,运行集合即可:前4行有
Name,所以GetAge执行、GetInfoCity跳过;后2行有City,所以GetInfoCity执行、GetAge跳过。
小提示
- 迭代索引是从0开始的,所以方案一里的
iterationIndex < 4对应前4次有效迭代; - 如果你的CSV里后两行
City是空的,方案一里GetInfoCity还是会执行,只是参数为空,要是你想只运行有非空City的行,可以在脚本里加判断pm.variables.get("City") === ""再跳过。
备注:内容来源于stack exchange,提问作者Oren Diaz




