当前位置: 首页 > 知识库问答 >
问题:

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

卢阳成
2023-03-14

我正在使用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}}

我希望Postman会看到task_id_list是一个数组和简单的“工作”,但事实似乎并非如此。有没有可能根据数组输入多次运行一个步骤?

共有1个答案

梁季
2023-03-14

本文的解决方案

获取第一个请求的测试脚本中的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)

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

 类似资料:
  • 我刚接触Postman,遇到了一个我无法解决的经常性问题。我试图使用在预请求脚本上建立的数据数组多次运行同一个请求,但是,当我转到runner时,请求只运行一次,而不是3次。 预请求脚本: 测试: 我已经查看了文档,但我找不到我的代码有什么问题。 谢谢!

  • 我想用不同的预请求脚本多次运行相同的请求?不使用数据驱动(CSV)测试,我能做什么? 例如,我必须多次运行下面的GET url(每2分钟一次),但每当我运行它时,我都需要进行不同的预请求测试! {{url}}/legacy/COL 在此处输入图像描述

  • 我试图利用Java多态性。我用Spring Boot构建了一个简单的CRUD应用程序,我想用Postman测试它... 问题是,我有下一个例外:

  • 我正在尝试发送一个经过身份验证的请求,只需点击邮递员。 所以,我有一个名为“Oauth”的请求,我正在使用测试将令牌存储在局部变量中。 我现在要做的是,对于需要承载令牌的任何其他请求,自动运行Oauth请求(从预请求脚本)。 有没有一种方法可以通过单击邮递员按钮来获取访问令牌并发送经过身份验证的请求?

  • 如果有人能对此有所了解,我真的很感激。

  • 问题内容: 我在一个要刮擦多个站点(可能是数百个站点)的项目中使用了scrapy,并且我必须为每个站点编写特定的蜘蛛。我可以使用以下命令在部署要抓取的项目中安排 一只 蜘蛛: 但是,如何一次计划一个项目中的 所有 蜘蛛呢? 所有帮助非常感谢! 问题答案: 我一次运行200个以上Spider的解决方案是为该项目创建一个自定义命令。有关实现自定义命令的更多信息,请参见http://doc.scrapy