You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Postman中结合CSV文件按指定次数运行集合内不同请求

如何在Postman中结合CSV文件按指定次数运行集合内不同请求

嘿,我刚好碰到过类似的需求,给你两个实用的方案,都能完美实现你想要的效果:先跑4次GetAge请求,再跑2次GetInfoCity请求,同时用上你的CSV数据。

方案一:用集合级脚本控制请求执行(推荐)

这个方案不需要修改原CSV,靠脚本判断迭代次数来决定执行哪个请求,步骤很清晰:

  1. 保持你原有的CSV文件不变,它有4行有效数据(包括表头):
    Name,City
    Jhon,New York
    Lucy,London
    Adam,
    Alex,
    
  2. 打开Postman的集合运行器(Collection Runner),选中你的目标集合,上传这个CSV文件,然后把迭代次数设置为6次(4次GetAge + 2次GetInfoCity)。
  3. 给你的集合添加预请求脚本(注意是集合级的,不是单个请求的),用来控制每个迭代里哪些请求能执行:
    // 获取当前迭代的索引(从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. 直接运行集合就行啦:前4次迭代会自动跳过GetInfoCity,只跑GetAge并依次用CSV里的4个Name值;后2次迭代会跳过GetAge,跑GetInfoCity(用CSV里第3、4行的City值,哪怕是空的也会正常传入)。

方案二:调整CSV结构配合请求脚本

如果你觉得脚本判断迭代次数有点绕,也可以通过调整CSV的结构,让请求根据数据是否存在来决定是否执行:

  1. 修改你的CSV文件,改成6行:前4行保留原数据,后2行只填City(或者用你需要的城市值),Name留空:
    Name,City
    Jhon,New York
    Lucy,London
    Adam,
    Alex,
    ,New York
    ,London
    
  2. GetAge请求添加预请求脚本:如果当前迭代的Name为空,就跳过这个请求:
    if (!pm.variables.get("Name")) {
        pm.execution.skipRequest();
    }
    
  3. GetInfoCity请求添加预请求脚本:如果当前迭代的City为空,就跳过这个请求:
    if (!pm.variables.get("City")) {
        pm.execution.skipRequest();
    }
    
  4. 打开集合运行器,上传修改后的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

火山引擎 最新活动