从响应正文中保存 Postman 集合变量

问题描述 投票:0回答:3

试图找出为什么我无法让它工作?另外,控制台没有给出太多结果。

场景:

  1. 发出 POST 请求以获取带有 TOKEN 的响应
  2. 将响应令牌保存到集合变量(因为集合文件将用于导入到云中的另一个测试解决方案)
  3. 使用该集合变量从会话中注销

因此,我需要能够将其存储为集合变量,并在从会话注销/删除 API 管理会话时使用该令牌。

控制台错误:

There was an error in evaluating the test script:  JSONError: Unexpected token 'o' at 1:2 [object Object] ^

测试:

var response = pm.response.json()
var jsonData = JSON.parse(response)
pm.collectionVariables.set("token", jsonData.response.token);

回复正文:

{
    "response": {
        "token": "***"
    },
    "messages": [
        {
            "code": "0",
            "text": "OK"
        }
    ]
}

非常感谢您的建议!

javascript api request postman
3个回答
13
投票

JSON.parse(responseBody) 始终获取响应的 json 表示。

一个完整的故障安全方法是:

pm.test("response is ok",  ()=>{
    pm.response.to.have.status(200)
})

var jsonData = JSON.parse(responseBody);

postman.setEnvironmentVariable("token", jsonData.token);

7
投票
if(pm.response.code == 200){
    pm.environment.set("variable_name",pm.response.json().field_name)
}

variable_name 是环境中变量设置的名称,field_name 是 GET、POST 或任何方法响应中的字段或属性的名称。


1
投票

这是我使用的方法。

  1. 发送请求
  2. 检查是否有回复200
  3. 如果为 true 设置令牌
pm.test("response is ok",  ()=>{
   if( pm.response.to.have.status(200)){
var jsonData = JSON.parse(responseBody);

postman.setEnvironmentVariable("token", jsonData.token);
}
})

您需要根据情况更改您的状态代码。

希望有帮助

© www.soinside.com 2019 - 2024. All rights reserved.