我正在尝试找到一种方法来使用邮递员的预请求脚本中的.json文件中的数据。 如您在下面的代码中看到的,我正在为请求使用循环。 在我的请求前脚本中,我想使用我的文件Data.json中的“ id_group”:“ 14803,14805” 代替 id_group = [“ 14803”,“ 14805”]; 。
谢谢
URL:
.../group/{{id_of_group}}/members
身体
: {
"id_user": {{id_user}}
}
预请求脚本:
var id_group = pm.environment.get("id_group");
if (!id_group) {
id_group = ["14803","14805"];
}
var currentIdGroup = id_group.shift();
pm.environment.set("id_of_group", currentIdGroup);
pm.environment.set("id_group", id_group);
测试:
var id_group = pm.environment.get("id_group");
console.log(id_group);
if (id_group && id_group.length > 0) {
postman.setNextRequest('Add user to groups');
} else {
postman.setNextRequest();
}
Data.json文件:
[{
"id_user":47091,
"id_group":"14803,14805"
}]
答案 0 :(得分:1)
您正在创建一个数组对象。但是pm.environment.set()
仅存储字符串。
您必须使用JSON.stringify()
将它们转换为字符串。
我建议不要使用pm.environment.set("id_of_group", currentIdGroup);
pm.environment.set("id_of_group", JSON.stringify(currentIdGroup));
和向后相同。如果要从env vars加载,则必须解析字符串化的对象:
JSON.parse(pm.environment.get("id_group"));
答案 1 :(得分:0)
我刚刚找到了答案。 在请求前脚本中,我使用变量id_group,该变量用于获取将在循环中使用的ID。
我发现 pm.iterationData.get(); ,它将从JSON文件中获取数据。代替 id_group = [“ 14803”,“ 14805”]; ,我使用 pm.iterationData(“ id_group”)。
我的预请求脚本现在看起来像这样:
var id_group = pm.environment.get("id_group");
if (!id_group) {
id_group = pm.iterationData.get("id_group");
}
var currentIdGroup = id_group.shift();
pm.environment.set("id_of_group", currentIdGroup);
pm.environment.set("id_group", id_group);
我作弊了一点,我的JSON现在看起来像这样:
[{
"id_user":47091,
"id_group":["14803","14805"]
}]