Postman -- 从 JSON 响应中提取时无法使用环境变量

Postman -- Unable to use environment variable when extracting from JSON response

我有一套邮递员collections。服务器支持两种类型的用户角色,合作伙伴和客户。 restful 服务器 URL 包括角色名称(例如 http://server.com/customer/accounthttp://server.com/partner/account

JSON 数据也因角色而异。

"account" : {
  "customer" : {
    "name" : "Fred"
  }
}

"account" : {
  "partner" : {
    "name" : "Fred"
  }
}

我正在尝试提取名称,但邮递员不喜欢指定用于提取响应的角色的嵌入式环境变量。环境变量可以很好地创建请求。

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("user_name", jsonData.account.{{role}}.name);

Postman 报告语法错误 (Unexpected '{' ),所以我不抱希望,但是有办法做到这一点吗?

---更新--- 我找到了一个可行的解决方法,但不是那么优雅。

if (environment["role"] == 'partner') {
  postman.setEnvironmentVariable("user_name", jsonData.account.partner.name);
} else {
  postman.setEnvironmentVariable("user_name", jsonData.account.customer.name);
}

预请求脚本和测试需要有效 javascript 因此您不能使用 {{var}} 构造访问全局变量和环境变量。

为了使您的测试看起来更好一些,您可以这样做

var jsonData = JSON.parse(responseBody),
    role = environment["role"];

postman.setEnvironmentVariable("user_name", jsonData.account[role].name);