首页 > 解决方案 > Postman 是否支持控制请求体的格式?

问题描述

我正在考虑使用 Postman 来自动化我的 REST API 测试,并且只使用了几天。到目前为止,我已经为我的初始集合创建了足够数量的请求。我也在我的请求前脚本、测试和请求正文中使用了全局变量、环境变量和集合变量。我希望控制请求中包含哪些属性,而无需制作同一请求的多个副本以排除某些属性。

例如,我有一个 JSON 请求正文,如下所示:

{
    "Username": "{{Username}}",
    "Password": "{{Password}}",
    "AnotherProperty": ""
}

如果“AnotherProperty”为空或为空,我想从请求中完全删除该属性。我只希望“AnotherProperty”包含在请求中,如果它有一个值。因此,如果为 null 或为空,则请求应显示为:

{
    "Username": "{{Username}}",
    "Password": "{{Password}}"
}

我发现完成此操作的唯一方法是在集合中保存带有和不带有属性的单独请求,但是当有许多属性时,对请求中的每个属性执行此操作似乎并不有效。如果它们的值为空或空,是否可以控制请求中包含的属性?

标签: jsonresttestingautomationpostman

解决方案


如果您有来自先前请求的 JSON 请求正文,请将其保存为环境变量。然后,您可以在主请求的预请求脚本中更新您计划发送的正文,或者在前一个请求的测试脚本中更新正文。

然后在主请求中,您可以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}}

推荐阅读