testing - 如何在Postman中检查json模式?

标签 testing automated-tests postman json-schema-validator

我在 Postman 中进行了 json 架构测试。

schema = {
    "items": {
        "required": [
            "id",
            "payment_id",
            "bank_info_id",
            "account_number",
            "account_owner",
            "entity_sub_systems",
            "is_main",
            "public_id"
        ]
    }
}

pm.test("JSON schema check", function () {
    pm.response.to.have.jsonSchema(schema);
});

它有效。但也存在一些问题。 该测试主要检查键的名称。例如,如果响应 json 包含“isMain”而不是“is_main”。测试失败,因为响应没有必需的键“is_main”。或者,如果架构的键数量多于响应中的键数量。

问题是,如果响应 json 有额外的键,测试不会失败。例如,如果 json 模式是这样的,并且响应 json 的键比模式中的键多

schema = {
    "items": {
        "required": [
            "id",
            "payment_id",
            "bank_info_id",
            "is_main",
            "public_id"
        ]
    }
}

Response body 
{
    "id":"65161",
    "payment_id":"65161",
    "bank_info_id":"65161",
    "is_main":true,
    "public_id":"65161",
    "something":"65161"
}

测试不会失败。

那么,问题是如何严格按照所需的 json 架构键检查响应 json?

以下 Postman 文档 - 小型验证器可以工作,但在 Postman 10 版本之后不支持工作。 以下测试也通过了额外的按键响应。

var jsonData = JSON.parse(responseBody);

pm.test('Checking Response Against Schema Validation', function() {
    var result=tv4.validateMultiple(jsonData, schema);
    console.log(result);
    pm.expect(result.valid).to.be.true;
});

最佳答案

架构中有一个名为additionalProperties的字段。如果我们指定它false,那么它将不允许附加属性。希望这个Doc有帮助。

const schema = {
    "items": {
        "required": [
            "id",
            "payment_id",
            "bank_info_id",
            "account_number",
            "account_owner",
            "entity_sub_systems",
            "is_main",
            "public_id"
        ],
       "additionalProperties": false,
       "properties": {
            "id": {},
            "payment_id": {},
            "bank_info_id": {},
            "account_number": {},
            "account_owner": {},
            "entity_sub_systems": {},
            "is_main": {},
            "public_id": {}
        }
    }
};

关于testing - 如何在Postman中检查json模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76097815/

相关文章:

linux - 在 Linux 上自动化串口通信

node.js - 使用 Spectron 和 Travis 测试 Electron 应用程序

javascript - 授权承载 token 的 postman 预请求脚本

javascript - 在测试中调试输出

sql-server - 测试时临时备份/恢复数据

java - 在 Spring Boot 中使用 MockMvc 进行测试

ruby-on-rails - 如何创建两个对象属于同一个父对象的工厂?

html - 如何验证特定文本存在于 Selenium IDE 的属性中

unit-testing - 如何使用 .Net Core 和 coverlet 查看友好的单元测试报告?

ios - 发布参数未从应用程序到达 API