我正在尝试根据响应中的特定值设置邮递员环境变量。
我不确定用于获取价值的代码。
我知道我需要将响应设置为变量,如下所示:
var response = JSON.parse(responseBody);
我知道我可以使用以下设置我的环境变量:
postman.setEnvironmentVariable("category_ref",myVariableName);
以下是我的回复中的摘录:
{
"id": 45,
"name": "Accommodation",
"description": ""
},
{
"id": 46,
"name": "Accommodation (Engineering)",
"description": ""
},
我想基于我已经知道的“名称”值来获取“ id”值。
一个例子是,我希望我的代码给我一个ID,其中“名称” =“住宿”
编辑:
更改为原始问题,遵循以下答案。
我的测试代码现在看起来像这样:
//Ensure the API Test Category is present
var response = JSON.parse(responseBody);
tests["my test"] = responseBody.has("Accommodation");
//pass in id into variable for delete step
var requiredId = pm.response.json().find(function(element){
if (element.name == "Accommodation"){
return element.id;
}
});
stringId = JSON.stringify(requiredId);
pm.environment.set("category_ref",stringId);
console.log("my string "+stringId);
我到控制台的输出如下所示,这也是发送到category_ref环境变量的值:
my string {"id":45,"name":"Accommodation","description":""}
剩下的问题是,我不想像上面那样返回所有元素,我只想返回“ 45”,这是id =住所的id值。
答案 0 :(得分:1)
Postman中的测试只是JavaScript,因此您可以按以下方式使用Array.find()
,
响应正文:
[
{
"id": 45,
"name": "Accommodation",
"description": null
},
{
"id": 46,
"name": "Accommodation (Engineering)",
"description": null
}
]
测试窗口:
var matchedItem = pm.response.json().find(function(element) {
if (element.name == "Accommodation") {
return element;
}
});
console.log(matchedItem.id);