我正在考虑使用Postman自动化我的REST API测试,并且仅使用了几天。到目前为止,我已经为初始集合创建了足够数量的请求。我在请求前脚本,测试和请求正文中都使用了全局变量,环境变量和集合变量。我希望控制请求中包含哪些属性,而不必为同一请求制作多个副本以排除某些属性。
例如,我有一个这样的JSON请求正文:
{
"Username": "{{Username}}",
"Password": "{{Password}}",
"AnotherProperty": ""
}
如果'AnotherProperty'为null或为空,我想从请求中完全删除该属性。我只希望“ AnotherProperty”包含在请求中(如果它具有值)。因此,如果为null或为空,则请求应显示为:
{
"Username": "{{Username}}",
"Password": "{{Password}}"
}
我发现完成此操作的唯一方法是在集合中包含和不包含属性的情况下保存单独的请求,但是当有许多属性时,对请求中的每个属性执行此操作似乎效率不高。如果它们的值为null或为空,是否可以控制请求中包含的属性?
答案 0 :(得分:0)
如果您具有上一个请求的JSON请求正文,则将其另存为environment variable。然后,您可以针对主要请求更新要在pre-request script中发送的正文,或者更新先前请求的test script中的正文。
然后,在主要请求中,您可以使用raw
语法以{{variableName}}
的形式发送正文。
预请求脚本示例:
// retrieve the environment variable
let potentialBody = JSON.parse(pm.environment.get("bodyToSend"));
// remove the property if empty
if (potentialBody.AnotherProperty === "") {
delete potentialBody.AnotherProperty;
}
// re-save the environment variable so it can be used in the primary request
pm.environment.set("bodyToSend", JSON.stringify(potentialBody));
正文示例(选择原始):
{{bodyToSend}}