首页 > 解决方案 > 如何针对 JSON 响应的子对象而不是 REST ASSURED 中的整个对象验证模式

问题描述

我在我的框架中使用 REST Assured API 测试库,并希望根据模式验证我收到的 JSON 响应的子对象。到目前为止,我没有任何关于如何验证与来自 groovy 的 then() 链方法相同的详细信息,它不允许在 String 或 jsonpath 对象上进行链接。

例如,如果下面是我从我的 api 端点收到的响应:

{
   a:a,
   b:b,
   c:c
   data : {
        .....// some attributes here
   }
}

在这里,如果我只想针对数据子对象而不是整个响应来验证我的架构,那么该怎么做。

以下是我根据“http://makeseleniumeasy.com/2020/10/28/rest-assured-tutorial-55-json-schema-validation-in-rest-assured/”使用的代码

    return this.response
            .then()
                .assertThat()
                .body("token", Matchers.notNullValue())
                .body(matchesJsonSchema(new File(jsonSchemaPathFolder+"/"+jsonSchemaFile)));

我得到一个对象数组作为响应而不是一个对象。像 [{ "bla" : "bla"}] 而不是 {"bla":"bla"}。我用下面的代码替换“[”和“]”,然后在使用模式验证之前提取子对象。

String data = response.replace("[","").replace("]","");  JsonObject obj = JsonParser().parse(data).getAsJsonObject()` I am using the obj.get("key") for JSONSchema validation. please let me know if m doing it wrong as i am getting  "java.lang.illeagalArgumentException Invalid JSON Expression : Unexpected output " error 

任何帮助将不胜感激。请提供任何示例代码或文档。提前致谢。

标签: apirestrest-assuredweb-api-testingrest-assured-jsonpath

解决方案


推荐阅读