运行 Postman 使用上一步中的数组多次请求
Run a Postman request multiple times using an array from a previous step
我正在使用 postman 编写一些测试脚本和数据清理脚本,想知道是否可以 运行 对上一步生成的数组结果的请求。
例如,我有一个 API returns 作为 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
是一个简单的数组 "work",但事实似乎并非如此。是否可以根据数组输入多次运行步?
来自这个 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)
所以你应该明白我的想法。
我正在使用 postman 编写一些测试脚本和数据清理脚本,想知道是否可以 运行 对上一步生成的数组结果的请求。
例如,我有一个 API returns 作为 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
是一个简单的数组 "work",但事实似乎并非如此。是否可以根据数组输入多次运行步?
来自这个 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)
所以你应该明白我的想法。