【问题标题】:Fetch correct data from json file with postman使用邮递员从 json 文件中获取正确的数据
【发布时间】:2018-04-15 03:56:30
【问题描述】:

我目前正在运行 Postman, 我也做了以下测试:

pm.test("Addition", function () {
    pm.expect(pm.response.text()).to.include("Sture");
});

pm.test("amount", function () {
    pm.expect(pm.response.text()).to.include("60");

});

(见下面我的 json 文件)

[
    {
        "MyList": "BeforeCarl",
        "MyListTotalAmount": "90,92",
        "Mylist2": 
        [
            {
                "name": "Dennis",
                "amount": "10,00"
            },
            {
                "name": "Sture",
                "amount": "60,00"
            },
            {
                "name": "Anders",
                "amount": "30,00"
            }
        ]
    },
    {
        "MyList": "",
        "MyListTotalAmount": "40,00",
        "Mylist2": 
        [
            {
                "name": "Nils",
                "amount": "50,00",
                "": ""
            },
            {
                "name": "Helena",
                "amount": "60,00"
            },
            {
                "name": "Lena",
                "amount": "60,00"
            },
            {
                "name": "Stina",
                "amount": "50,00"
            }
        ]
    },
    {
        "MyList": "Lars",
        "MyListTotalAmount": "10,00",
        "MyList2": 
        [
            {
                "name": "Sten",
                "amount": "50,00"
            },
            {
                "name": "Stig",
                "amount": "30,00"
            }
        ]
    }
]

我现在的问题是我想获取:

 {
                "name": "Helena",
                "amount": "60,00"
            },

我的代码做错的是:
1。它创建前 2 个测试(没有必要)
2。每个获取的字符串都可以在 JSON 中的任何位置。

我希望代码仅检查该片段:

        {
            "name": "Helena",
            "amount": "60,00"
        }

有人可以帮我解决吗?

提前谢谢你。

【问题讨论】:

  • 使用 json.parse(responseBody) 解析您的响应,检查您的元素,然后当您匹配您的第一个 pm.expect 时,测试您的 json 元素中的第二个是否正确。顺便说一句,我不熟悉 chai 表示法,但如果你将两个 pm.expect 组合在一个函数中,我想你只会有一个测试......
  • 你能帮我举个例子吗?提前谢谢你

标签: json postman newman


【解决方案1】:

嗯, 如果你想定位一段代码,你可以解析你的 JSON 响应(顺便提一下,当心标志,你混合了 MyList2 和 Mylist2(小写'l')=>我在 Mylist2 中重命名了所有。

当您解析 JSON 正文时,如下例所示,您可以检查值...我不熟悉 pm.expect 的用法,所以我以“旧”方式进行操作,但您可以轻松转换它:

var jsonData = JSON.parse(responseBody);

console.log("json = " + jsonData)
for (i=0; i< jsonData.length;i++){
    console.log("json[i] = " + jsonData[i].Mylist2[0].name) 
    console.log("json[i].length = " + jsonData[i].Mylist2.length)
    for(j=0;j<jsonData[i].Mylist2.length;j++)
    {
        console.log("    json[i].mylist = " + jsonData[i].Mylist2[j].name)   
        if(jsonData[i].Mylist2[j].name == 'Helena') 
            {
                tests["Helena amount 60 ?"] = jsonData[i].Mylist2[j].amount == '60,00'
            }
    }
}

我放了很多控制台输出,这样你就可以看到发生了什么......测试[...] 相当于 pm.expect。

【讨论】:

  • 不客气,如果它运作良好,我建议您将其标记为已解决,以便社区知道它有解决方案。干杯。
  • 我会在星期一测试这个 :) 我回来了 :)
  • 看起来代码只是循环遍历了 json 节点列表。在我的情况下,我需要循环来检查 2 个项目,它们也需要在某些地方。
猜你喜欢
  • 2020-07-01
  • 1970-01-01
  • 2019-03-03
  • 1970-01-01
  • 2020-10-17
  • 2021-10-07
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
相关资源
最近更新 更多