空手道:我可以迭代 Json 数组响应并执行一些条件语句吗
Karate: Can I iterate on a Json array response and do some conditional statements
我的 json 数组响应如下所示:
response = [
{
"ID": "123",
"Name":"Test1",
"Data":{
"Status":"Red",
"Message":"user not valid",
"Code": "ERROR-P1"
}
},
{
"ID": "143",
"Name":"Test2",
"Data":{
"Status":"Amber",
"Message":"user data missing",
"Code": "ERROR-P2"
}
},
{
"ID": "133",
"Name":"Test3",
"Data":{
"Status":"Green",
"Message":"",
"Code": ""
}
}
json 数组中可以有更多条目具有相同的数据和状态。
我的用例是根据以下条件进行检查:如果我的 json 数组的状态为红色或琥珀色,则消息和代码不为空,类似地,如果我的状态为绿色,则消息和代码为空。
我需要遍历整个数组并验证这个场景。
并且还需要从数组 Json 响应中获取状态计数:红色、琥珀色和绿色。
空手道的最佳解决方案是什么?
任何帮助,将不胜感激。
谢谢
给你:
* def red = []
* def amber = []
* def green = []
* def fun =
"""
function(x){
if (x.Data.Status == 'Red') karate.appendTo(red, x);
if (x.Data.Status == 'Amber') karate.appendTo(amber, x);
if (x.Data.Status == 'Green') karate.appendTo(green, x);
}
"""
* karate.forEach(response, fun)
* assert red.length == 1
* match each red..Message == 'user not valid'
* match each amber contains { Data: { Status: 'Amber', Message: 'user data missing', Code: 'ERROR-P2' } }
我的 json 数组响应如下所示:
response = [
{
"ID": "123",
"Name":"Test1",
"Data":{
"Status":"Red",
"Message":"user not valid",
"Code": "ERROR-P1"
}
},
{
"ID": "143",
"Name":"Test2",
"Data":{
"Status":"Amber",
"Message":"user data missing",
"Code": "ERROR-P2"
}
},
{
"ID": "133",
"Name":"Test3",
"Data":{
"Status":"Green",
"Message":"",
"Code": ""
}
}
json 数组中可以有更多条目具有相同的数据和状态。 我的用例是根据以下条件进行检查:如果我的 json 数组的状态为红色或琥珀色,则消息和代码不为空,类似地,如果我的状态为绿色,则消息和代码为空。 我需要遍历整个数组并验证这个场景。 并且还需要从数组 Json 响应中获取状态计数:红色、琥珀色和绿色。 空手道的最佳解决方案是什么? 任何帮助,将不胜感激。 谢谢
给你:
* def red = []
* def amber = []
* def green = []
* def fun =
"""
function(x){
if (x.Data.Status == 'Red') karate.appendTo(red, x);
if (x.Data.Status == 'Amber') karate.appendTo(amber, x);
if (x.Data.Status == 'Green') karate.appendTo(green, x);
}
"""
* karate.forEach(response, fun)
* assert red.length == 1
* match each red..Message == 'user not valid'
* match each amber contains { Data: { Status: 'Amber', Message: 'user data missing', Code: 'ERROR-P2' } }