【问题标题】:Parsing nested elements from JSON response using a postman test script使用邮递员测试脚本从 JSON 响应中解析嵌套元素
【发布时间】:2020-02-20 19:06:46
【问题描述】:

我正在使用以下 Postman 测试脚本来检查和记录 POST 的状态。

pm.environment.unset("uuid");
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("uuid", jsonData.id);
var base = pm.request.url
var url = base + '/status?uuid=' + pm.environment.get("uuid");
var account = pm.request.headers.get("account")
var auth = pm.request.headers.get("Authorization")
pm.test("Status code is 200",
    setTimeout(function() {
        console.log("Sleeping for 3 seconds before next request.");
        pm.sendRequest ( {
            url: url, 
            method: 'GET',
            header: {
                'account': account,
                'Accept': 'application/json',
                'Content-Type': 'application/json;charset=UTF-8',
                'Authorization': auth
            }
        },
        function (err, res) {
            console.log(res.json().messageSummary);
        })
    },3000)
);

脚本能够进行调用并从响应中检索 messageSummary:

{
  "id": "3c99af22-ea07-4f5d-bfe8-74a6074af71e",
  "status": "SUCCESS",
  "token": null,
  "messageSummary": "[2] Records uploaded, please check errors/warnings and try again.",
  "data": [
    {
      "ErrorCode": "-553",
      "ErrorMessage": "Error during retrieving service service_id entered"
    }
  ]
}

我也想获得嵌套的 ErrorMessage,但到目前为止,我尝试过的所有内容都返回未定义或引发错误。

我认为console.log(res.json().data[1].ErrorMessage) 会起作用,但是,唉,它没有。

更新:数组以 [0] 而不是 [1] 开头...

pm.environment.unset("uuid");
var jsonData = pm.response.json();
pm.environment.set("uuid", jsonData.id);
var base = pm.request.url
var url = base + '/status?uuid=' + pm.environment.get("uuid");
var account = pm.request.headers.get("account")
var auth = pm.request.headers.get("Authorization")
setTimeout(function() {
    console.log("Sleeping for 3 seconds before next request.");
    pm.sendRequest ( {
        url: url, 
        method: 'GET',
        header: {
            'account': account,
            'Accept': 'application/json',
            'Content-Type': 'application/json;charset=UTF-8',
            'Authorization': auth
        }
    },
    function (err, res) {
        console.log(res.json().messageSummary);
        console.log(res.json().data[0].ErrorCode + ': ' + res.json().data[0].ErrorMessage)
    })
},3000)

【问题讨论】:

  • 会不会是[0] 而不是[1]
  • 您的脚本中也有很多新旧混合语法。 pm.response.json() 代表 JSON.parse(responseBody)pm.environment.set() 代表 postman.setEnvironmentVariable()。另外,您无缘无故地包装了pm.sendRequest(),它并没有真正断言我能看到的任何东西????
  • 谢谢丹尼。是的,应该是 [0] 而不是 [1]。

标签: postman postman-testcase


【解决方案1】:

您需要将 [1] 更改为 [0] 以修复该引用。

【讨论】:

    猜你喜欢
    • 2020-06-19
    • 1970-01-01
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 2022-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多