代码之家  ›  专栏  ›  技术社区  ›  CodeChimp

使用上一步中的数组多次运行postman请求

  •  1
  • CodeChimp  · 技术社区  · 8 年前

    我正在使用postman编写一些测试脚本和数据清理脚本,想知道是否可以对上一步生成的数组结果运行请求。

    例如,我有一个api,它将任务作为json返回,如下所示:

    [
        {
            "active": true,
            "_id": "5b2101244651a04a4907b094",
            "name": "Test Task",
            "updatedAt": "2018-06-13T11:33:56.911Z",
            "createdAt": "2018-06-13T11:33:56.911Z"
        },
        {
            "active": true,
            "_id": "5b2101244651a04a4907b067",
            "name": "Test Task 2",
            "updatedAt": "2018-06-13T11:33:56.911Z",
            "createdAt": "2018-06-13T11:33:56.911Z"
        }
    ]
    

    所以在测试脚本中,我运行这个命令来收集一个id数组:

    var jsonData = JSON.parse(responseBody)
    postman.setEnvironmentVariable('task_id_list', jsonData.map((i) => i._id))
    

    下一个请求是删除一个任务,但是api一次只删除一个任务。我想做的是:

    http://localhost:3000/api/v1/tasks/{{task_id_list}}
    

    我希望邮递员能看到 task_id_list 是一个数组和简单的“工作”,但似乎不是这样。是否可以基于数组输入多次运行步骤?

    1 回复  |  直到 8 年前
        1
  •  2
  •   Borys Fursov    7 年前

    从这个解决方案 article

    在第一个请求的测试脚本中获取id数组(我更喜欢将其存储在json中以避免出现错误):

    let JsonData = pm.response.json();
    let iDs = JsonData.map((i) => i._id)));
    pm.environment.set("IdArray", JSON.stringify(iDs);
    //and now check, if there was no objects returned, stop runner
    if(iDs.length === 0)
    {
        postman.setNextRequest(null);//next request will not be sent
    }
    else
    {
        pm.environment.set("count", 0);
    }
    

    在2请求的预请求脚本中:

    var count = +pm.environment.get("count");
    var iDs = JSON.parse(pm.environment.get("IdArray"));
    pm.variables.set("task_id_list", iDs[count]); //like one-request environment variable
    count = count + 1; //next iteration
    if(count < iDs.length)
    {
        postman.setNextRequest("NAME OF THIS REQUEST");
    }
    else 
    {
        postman.setNextRequest(null); // or next request name
    } 
    pm.environment.set("count", count)
    

    所以你应该理解我的想法。