【问题标题】:Postman test - automation testPostman 测试 - 自动化测试
【发布时间】:2021-08-12 01:25:51
【问题描述】:

我如何编写一个 Postman 测试来检查我的响应正文是否包含nets": {"4": "1"}? 我很难将这个"parameter_list": { "2": ... 部分放入pm.expect()。 “parmeter_list”可以包含许多名称为“number”的对象

{
    "request_id": 358624578,
    "product_list": [
        {
            "symbol": "AX-174",
            "value_ids": [
                271,
                1437038,
                .
                .
                .
                1757620
            ],
            "id": 65869
        }
    ],
    "do_show": true,
    "do_show_list": {
        "do_show_products": true,
        "do_show_parameters": true,
        "do_show_parameter_values": true,
        "do_show_flags": false
    },
    "parameter_list": {
        "2": {
            "value_type_id": 0,
            "name_full_txt": "Producent",
            "unit_text": null,
            "product_count": 1,
            "nets": {
                "3": "1"
            },
            "pos": 0,
            "id": 2
        }
    }
}

【问题讨论】:

  • 是否只需要为 parameter_list 中的“2”键编写测试?
  • 另外,你能更新你的问题标题吗? “邮递员测试 - 自动化测试”信息量不大。
  • 不,抱歉。我想检查“parameter_list”中可能的对象中的每一次出现
  • 用 parameter_list 中多个对象的场景更新了我的答案。

标签: json postman


【解决方案1】:

如果您只需要针对 parameter_list 中的“2”键进行测试,我会建议以下解决方案:

const jsonBody = pm.response.json();
const parameterList = jsonBody.parameter_list["2"];
const nets = {
    "nets": {
        "4": "1"
    }
};

pm.test("check parameter '2' contains nets",  () => pm.expect(parameterList).to.deep.include(nets));

我相信,您可以轻松修改netsparameterList 以匹配您的实际情况。

编辑: 如果您需要遍历 parameter_list 中的所有对象,可以在测试中使用 for..in 循环:

const jsonBody = pm.response.json();
const nets = {
    "nets": {
        "3": "1"
    }
};

pm.test("check all parameters contains nets",  () => {
    for(let parameter in jsonBody.parameter_list) {
        pm.expect(jsonBody.parameter_list[parameter]).to.deep.include(nets);
    }
});

或者为了提高可读性,请使用tests[]:

for(let parameter in jsonBody.parameter_list) {
    tests[`Check 'nets' object is in ${parameter} parameter`] = pm.expect(jsonBody.parameter_list[parameter]).to.deep.include(nets);
}

【讨论】:

    【解决方案2】:

    为了添加到@n-verbitsky 接受的答案,Postman 在请求的“测试”选项卡中提供了测试 sn-ps。有关在 Postman 中进行测试以及如何编写测试脚本的更多信息可以从他们的文档中获取:learning center

    我认为展示你已经编写的测试代码会很有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-09
      • 2017-10-25
      • 2020-12-16
      • 1970-01-01
      • 1970-01-01
      • 2011-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多