Karate 空手道中的JSON响应验证
我从一个过滤器查询中得到以下响应。由于筛选器应仅返回一个值,因此我正在使用以下内容验证该值: 和match GetDataSet_响应包含{“totalRows”:1}Karate 空手道中的JSON响应验证,karate,Karate,我从一个过滤器查询中得到以下响应。由于筛选器应仅返回一个值,因此我正在使用以下内容验证该值: 和match GetDataSet_响应包含{“totalRows”:1} 该过滤器基于Acctid。现在,我需要验证acctID值和整个json模式。在空手道中如何做呢?在模式中,您可以定义 期望值的数据类型,但不知道确切值 为数据编写一个预期条件 定义您已经知道的数据变量或硬编码数据 忽略一些不麻烦的数据 分解JSON并创建多个逻辑模式(从JSON中可以为“colDefs”和“rowData”创建
该过滤器基于Acctid。现在,我需要验证acctID值和整个json模式。在空手道中如何做呢?在模式中,您可以定义
- 期望值的数据类型,但不知道确切值
- 为数据编写一个预期条件
- 定义您已经知道的数据变量或硬编码数据
- 忽略一些不麻烦的数据
- 分解JSON并创建多个逻辑模式(从JSON中可以为“colDefs”和“rowData”创建单独的模式)
"totalRows": 1,
"colDefs": [
{
"entityAttributeId": "acctNm",
"headerName": "Account Name",
"field": "2",
"entityPath": "",
"entityId": "account"
},
{
"entityAttributeId": "acctId",
"headerName": "Account ID",
"field": "1",
"entityPath": "",
"entityId": "account"
}
],
"rowData": [
{
"1": "1939",
"2": "Bay Pond Partners",
"rowMeta": {
"account": {
"acctInstrumentId": "0025-1939",
"acctId": "1939"
}
}
}
]
}
您可以将模式存储在JSON文件中/直接在脚本中定义它并将其与响应匹配
假设我们将此模式存储在文件filterResponseSchema.json
YourFilter.feature
{
"colDefs": [
{
"entityAttributeId": "acctNm",
"entityId": "account",
"entityPath": "",
"field": "2",
"headerName": "Account Name"
},
{
"entityAttributeId": "acctId",
"entityId": "account",
"entityPath": "",
"field": "1",
"headerName": "Account ID"
}
],
"rowData": [
{
"1": "#string",
"2": "#string",
"rowMeta": {
"account": {
"acctId": "#(acctID)",
"acctInstrumentId": "#string"
}
}
}
],
"totalRows": 1
}
注意:
i) 在调用此模式之前,请确保有一个变量名“acctID”,以便karate将该值嵌入到JSON模式中
ii)我对您的“colDefs”值的假设将始终相同,因此我对其进行了硬编码
涵盖了大量的模式验证示例
我建议你阅读这篇文章以获得更多的见解。我是空手道新手。这个模式看起来很好,但是我如何使用它呢?你可以把它保存在json格式中,在你的特性中定义它,并将它与你的响应匹配在答案中添加一个示例特性谢谢。这对我有用。您能告诉我您在何处或使用了什么工具(如果有)来创建此架构吗。下次它会帮我的。很高兴它成功了:)。我在eclipse中使用了JSON编辑器,并根据您的问题自己编写了它。我没有任何工具可用于此。
* def acctID = "1939"
# call your filter request
* def myFilterSchema = read('filterResponseSchema.json')
* match response == myFilterSchema