【问题标题】:Using Postman to take values from two different responses to assert against each other使用 Postman 从两个不同的响应中获取值以相互断言
【发布时间】:2019-04-10 20:14:42
【问题描述】:

我有一个要在 Postman 中运行的测试,我想在其中对两组数组进行断言。每个数组的数据将来自不同的响应。

所以我想我会打电话来获得我的预期结果,并在该响应的测试中将它们设置在一个变量中,然后我会在下一个响应的测试部分中使用该变量来断言反对.我的问题是如何将两个数组存储到 JSON 响应中的变量中。它们有不同的格式。

这是我的预期结果响应。在这里,我需要设置一个变量来获取所有“名称”值,因此我希望我的变量能够保存 [4],[FX01 - Yandi],[FX03 - Whaleback]

[
    {
        "id": 16,
        "name": "4",
        "description": "44"
    },
    {
        "id": 9,
        "name": "FX01 - Yandi",
        "description": ""
    },
    {
        "id": 10,
        "name": "FX03 - Whaleback",
        "description": ""
    },
]

这是我的实际结果响应,我想在“sites”元素下获取所有“name”值,所以我希望再次看到[4],[FX01 - Yandi],[FX03 - Whaleback] 的数组与之前的数组匹配,然后我可以断言反对。

{
    "sites": [
        {
            "id": 16,
            "name": "4",
            "description": "44"
        },
        {
            "id": 9,
            "name": "FX01 - Yandi",
            "description": ""
        },
        {
            "id": 10,
            "name": "FX03 - Whaleback",
            "description": ""
        },
    ],
    "shutdownTypes": [
        {
            "id": 5,
            "name": "Major",
            "description": ""
        },
        {
            "id": 4,
            "name": "Minor",
            "description": ""
        },
        {
            "id": 7,
            "name": "vc",
            "description": "vcvcx"
        },
        {
            "id": 6,
            "name": "vcc",
            "description": "vcxe33&*(&*^%$#\":}{><?/"
        }
    ],
}

【问题讨论】:

    标签: json automated-tests postman


    【解决方案1】:

    在您的第一个请求测试中,获取所需元素并将其推送到数组并将该数组设置为环境变量。

    var jsonData = pm.response.json();
    var array = [];
    
    jsonData.forEach(function(element) {
      array.push(element.name);
    });
    
    pm.environment.set("pre_request_array", array);
    

    在您的第二次请求测试中,获取我们之前设置的环境变量,现在可以比较两者:

    var jsonData = pm.response.json();
    var currArray = [];
    
    var prevArray = pm.environment.get("pre_request_array");
    
    jsonData.sites.forEach(function(element) {
      currArray.push(element.name);
    });
    
    console.log(prevArray);
    console.log(currArray);
    
    //TODO: add compare logic here
    

    在控制台中,您可以找到如下屏幕的输出。

    【讨论】:

    • 太棒了。工作了一个款待。我开始得到这个,虽然一次很小。您是否有任何参考材料专门推荐用于从 JSON 中获取元素以用于测试?我一直在努力寻找这类事情的指南。
    • 很高兴能帮到你!我认为*用于从 JSON * 中获取元素的特定材料*,我们正在使用的只是 JavaScript,因此您可以每次都在 Google 上搜索它。我通常打印控制台日志并检查我收到的数据类型,然后挖掘我想要的较低元素。
    猜你喜欢
    • 1970-01-01
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 2021-09-16
    相关资源
    最近更新 更多