空手道 API json 响应 - 如何验证 API 响应中有时出现有时不出现的密钥的存在
Karate API json response - How to validate the presence of a key which sometimes come and sometimes not in the API response
我需要帮助来验证响应中是否存在一个密钥。 API 的响应看起来像 -
"persons": [
{
"id": "27",
"source": {
"personId": 281,
"emailAddress": "abc@abc.com",
"firstName": "Steve"
}
},
{
"id": "28",
"source": {
"personId": 353,
"emailAddress": "abcd@abc.com",
"firstName": "John"
"LastName" : "Cena"
}
}
]
}
我想断言 source.LastName 是否出现,如果出现,那么它应该始终包含一个字符串值。
该解决方案应该是通用的,它应该适用于 30 或 40 人的对象,目前我正在使用空手道版本 0.9.4 并且需要一个解决方案来处理这种情况。
提前致谢!
在架构中 "##string"
验证该字段可以为 null 或字符串。
示例代码:
Feature: Schema validation
Scenario:
* def resp =
"""
{
"persons": [
{
"id": "27",
"source": {
"personId": 281,
"emailAddress": "abc@abc.com",
"firstName": "Steve"
}
},
{
"id": "28",
"source": {
"personId": 353,
"emailAddress": "abcd@abc.com",
"firstName": "John",
"LastName" : "Cena"
}
}
]
}
"""
* def schema =
"""
{
"id": "#string",
"source": {
"personId": "#number",
"emailAddress": "#string",
"firstName": "#string",
"LastName": "##string"
}
}
"""
* match each resp.persons == schema
我需要帮助来验证响应中是否存在一个密钥。 API 的响应看起来像 -
"persons": [
{
"id": "27",
"source": {
"personId": 281,
"emailAddress": "abc@abc.com",
"firstName": "Steve"
}
},
{
"id": "28",
"source": {
"personId": 353,
"emailAddress": "abcd@abc.com",
"firstName": "John"
"LastName" : "Cena"
}
}
]
}
我想断言 source.LastName 是否出现,如果出现,那么它应该始终包含一个字符串值。
该解决方案应该是通用的,它应该适用于 30 或 40 人的对象,目前我正在使用空手道版本 0.9.4 并且需要一个解决方案来处理这种情况。
提前致谢!
在架构中 "##string"
验证该字段可以为 null 或字符串。
示例代码:
Feature: Schema validation
Scenario:
* def resp =
"""
{
"persons": [
{
"id": "27",
"source": {
"personId": 281,
"emailAddress": "abc@abc.com",
"firstName": "Steve"
}
},
{
"id": "28",
"source": {
"personId": 353,
"emailAddress": "abcd@abc.com",
"firstName": "John",
"LastName" : "Cena"
}
}
]
}
"""
* def schema =
"""
{
"id": "#string",
"source": {
"personId": "#number",
"emailAddress": "#string",
"firstName": "#string",
"LastName": "##string"
}
}
"""
* match each resp.persons == schema