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

时间:2016-01-28 08:30:18

标签: postman

我有一套邮递员收藏品。服务器支持两种类型的用户角色,合作伙伴和客户。其余的服务器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);
}

1 个答案:

答案 0 :(得分:1)

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

为了让你的测试看起来更好一点,你可以做这样的事情

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

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