api - 如何针对 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
任何帮助将不胜感激。请提供任何示例代码或文档。提前致谢。
解决方案
推荐阅读
- css - 向上滑动模态 - 覆盖背景以立即启动
- python - camelot-py 将文本添加到错误的表格单元格
- mrtk - MRTK 观众视图已弃用?
- python - 无法通过 conda、virtualenv 或 py_install 使用 reticulate 安装 tensorflow
- r - 如何将一个公共数字添加到另一列中具有相同值的行?
- flutter - 如何在颤动的交互式查看器中获得平移值?
- python - 用 Python 读取序列号
- android - 执行 sms send consule command via telnet to android emulator 时未收到 Channel found 通知
- android - ReactNative 检测 UI 元素与视口的交集
- python - Pytezos函数填充很慢