【问题标题】:Getting response from Postman in script在脚本中获得 Postman 的响应
【发布时间】:2020-05-06 10:33:23
【问题描述】:

我想从 Postman 的响应中获取 token 的值并将其设置为环境。

我的回复显示如下:

{
  "success": true,
  "token": "ojkdd"
}

我的脚本是:

pm.test(responseBody, true)
var jsonData = JSON.parse(responseBody);
console.log(jsonData)

我收到以下错误:

ReferenceError: responseBody is not defined

【问题讨论】:

标签: javascript postman


【解决方案1】:

您的 json 数据在 pm 中。 因此,您需要使用以下代码检索您的 JSON 数据。

 var jsonData = pm.response.json(); 

 pm.test("Verify Json values", function () { 
  pm.expect(jsonData.success).is.to.equal(true); 
 });

编辑:按照@danny 的建议将其设置为环境

 pm.environment.set("token", pm.response.json().token)

【讨论】:

  • 谢谢,我从第一行收到以下错误:“TypeError: Cannot read property 'json' of undefined”
  • 你有 console.log(pm.response.json().token) 吗?有时即使邮递员抛出未定义的错误,也会设置环境。
  • 有问题的截图。
  • 您只能在Tests 选项卡中使用pm.response.json(),因为它会知道响应是什么。 Pre-request Script 选项卡中的项目在发送主请求之前被执行。
  • 不,您只能在应用程序的Tests 选项卡中使用pm.response.json() 功能。它在Pre-request Script 选项卡中不起作用。
【解决方案2】:

如果要将值存储为 environment 变量,可以将其添加到 Tests 选项卡:

pm.environment.set("token", pm.response.json().token)

在存储变量之前,您需要确保已创建环境文件并在 UI 的右上角选中它。

关于存储变量的更多信息可以在这里找到:

https://learning.getpostman.com/docs/postman/variables-and-environments/variables/#defining-variables-in-scripts

【讨论】:

    【解决方案3】:

    你和我今天的做法一样错误:D 脚本应该在 test 而不是 Pre-request Sript

    回复: { “令牌”:“kj32n4jk32n4” }

    将下面的脚本传递到 postman 中的 TEST 选项卡并在 postman 控制台中调试它

    var data = JSON.parse(responseBody)
    console.log(data.token)
    postman.setEnvironmentVariable('token',data.token) 
    

    【讨论】:

    • 那是你自己的令牌吗?
    猜你喜欢
    • 2018-05-21
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 2018-09-10
    • 2021-09-15
    相关资源
    最近更新 更多