【问题标题】:How to validate the contents inside the JSON body如何验证 JSON 正文中的内容
【发布时间】:2019-12-19 01:03:00
【问题描述】:

在邮递员中,我想验证“名称”:“Twilio”,它位于数据内部 > twilio > 可见 > 名称

这是我得到的 JSON 响应

{ “成功”:是的, "时间戳": "2019-08-12T12:31:33+00:00", “响应代码”:200, “数据”: { “暮光之城”:{ “名称”:“Twilio”, “蛞蝓”:“twilio”, "图像": "https://s3-eu-west-1.amazonaws.com/connector-assets/images/twilio.png", "description": "Twilio 是一种云通信平台即服务。集成您的 Twilio 帐户以发送来自 Purple 的外发短信。", “类别”:“通讯”, “连接计数”:1, “allowMultipleAdd”:假, “可编辑”:[], “可见”:{ “cf-5d51503868af3”:{ “名称”:“Twilio” } }, “id”:“cf-5d515c2527579”, “覆盖允许”:假 }, “salesforce-mc”:{ "name": "Salesforce 营销云", “蛞蝓”:“salesforce-mc”, "图像": "https://s3-eu-west-1.amazonaws.com/connector-assets/images/sf-mc.png", “描述”:“Salesforce Marketing Cloud 是数字营销自动化和分析软件和服务的提供商。”, “类别”:“营销自动化”, “连接计数”:0, “allowMultipleAdd”:真, “可编辑”:[], “可见”:[], “id”:“cf-5d515c252bc31”, “覆盖允许”:真 } } }

【问题讨论】:

  • 要获得您问题的答案,最好展示您的尝试,然后让社区帮助纠正您遇到的错误,而不是让社区告诉您如何去做。请参阅stackoverflow.com/help/mcve,了解如何编写一个有可能得到回答的好问题。
  • 对服务器端代码进行验证。

标签: json validation post postman


【解决方案1】:

最简单的方法是将响应处理为 JSON,并简单地检查您的层次结构:

在测试部分,你可以添加一些测试:

pm.test("Response should be OK", function () { 
    pm.response.to.be.ok;
});

// You can actually check for explicit response code if a 200 series is not enough.
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

// Optionally test the returned Content-Type is correct.
pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type");
});

pm.test("Response should be okay to process", function () { 
    pm.response.to.be.ok;
    pm.response.to.not.be.error; 
});

pm.test("Body contains JSON data result with Twilio as the viewable name", function () {
    const JsonData = pm.response.json();
    pm.expect(JsonData.data.twilio.viewable.name).to.equal('Twilio');
});

为了安全起见,您可以先检查每个父元素是否存在(验证数据在 JsonData 中),以避免在负载发生变化或与您期望的不匹配时出现错误。

编辑:您的 JSON 结构:

{ 
    "success": true, 
    "timestamp": "2019-08-12T12:31:33+00:00", 
    "response_code": 200, 
    "data": { 
        "twilio": { 
            "name": "Twilio", 
            "slug": "twilio", 
            "image": "https://s3-eu-west-1.amazonaws.com/connector-assets/images/twilio.png", 
            "description": "Twilio is a cloud communications platform as a service. Integrate your Twilio account to send outgoing SMS from Purple.", 
            "category": "communication", 
            "connectedCount": 1, 
            "allowMultipleAdd": false, 
            "editable": [], 
            "viewable": { 
                "cf-5d51503868af3": { 
                    "name": "Twilio" 
                }
            }, 
            "id": "cf-5d515c2527579", 
            "overrideAllowed": false 
        }, 
        "salesforce-mc": { 
            "name": "Salesforce marketing cloud", 
            "slug": "salesforce-mc", 
            "image": "https://s3-eu-west-1.amazonaws.com/connector-assets/images/sf-mc.png", 
            "description": "Salesforce Marketing Cloud is a provider of digital marketing automation and analytics software and services.", 
            "category": "marketing-automation", 
            "connectedCount": 0, 
            "allowMultipleAdd": true, 
            "editable": [], 
            "viewable": [], 
            "id": "cf-5d515c252bc31", 
            "overrideAllowed": true 
        }
    } 
}

基于此,您正在查找的文本是存在的,但在 ID 下,不能如您所指示的那样直接可用。可以进行两种检查: 1.使用主块中的名称

pm.test("Body contains JSON data result with Twilio as the viewable name", function () {
    const JsonData = pm.response.json();
    pm.expect(JsonData.data.twilio.name).to.equal('Twilio');
});
  1. 另一种方法是提取可视值 ('cf-5d51503868af3') 并使用该值作为键来进行测试。不确定这是否可以从您的用户 ID 或其他数据源获得。如果没有,那么您需要从JsonData.data.twilio.viwable 对象中提取它。还有一些更有用的例子here in this answer.

【讨论】:

  • 'code' pm.test("Body 包含 JSON 数据结果,Twilio 作为可视名称", function () { const JsonData = pm.response.json(); pm.expect(JsonData. data.twilio.viewable.name).to.equal('Twilio'); }); “代码”这对我不起作用
  • @MohammedAli 不确定“代码”是什么意思?我已经用你的 JSON 结构更新了我的答案以帮助澄清。
猜你喜欢
  • 2016-11-25
  • 1970-01-01
  • 2018-04-09
  • 2021-01-12
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多