我的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数组的状态为Red或Amber,则消息和代码不为空,同样,如果我的状态为Green,则消息和代码为空。我需要迭代到整个数组并验证此场景。还需要从Array Json响应中获取状态计数:Red、Amber和Greens。空手道的最佳解决方案可能是什么?任何帮助都将不胜感激。谢谢
干得好:
* 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' } }
下面是我在点击特定Web服务时收到的JSON响应: 我不知道哪个索引有我的期望值(我需要在确定哪个具有)后验证多个值),这是动态的。不希望使用硬编码值。并匹配,因为这将在下次更改。 对此我有两个问题: 如何将响应传递给java代码并获取具有的数组索引,以便使用此索引进行验证? 下面的代码不起作用。
我一直在验证下面的回答。 当我使用空手道发出获取请求时,我会得到以下响应,我想验证它。 我试过: 它说它不是字符串。你能帮我确认一下这个请求吗?
我正试图针对一些案例运行一个简单的测试。我在Windows上使用VS代码,带有空手道扩展和独立空手道。罐子 以下是我的特色: Json有点像 这一切都很好,直到案例数量达到300个左右,在执行结束时就会冻结,并且永远不会在控制台中生成摘要。 对于较小的数字,它可以正常工作,并且摘要总是指示,如果API在~1秒内响应,那么经过的时间也支持这一点。 我的问题是,把冻结放在一边,我可以使用独立JAR并行
我试图为下面的响应编写JSON模式。响应是动态的它可以是细节或细节。如果响应中的是,那么响应将包含人对象(组织对象将不可用)。如果是,组织详细信息将包含在响应中(人对象将不可用)。下面给出了两种不同的预期反应 我试图使用下面给出的模式使上述条件有效 我目前面临的问题是,如果响应中的是,它会抛出以下错误 是否有任何方法可以在模式中指定,如果person对象可用,则organization对象将不可用
我只是想知道如何进行条件模式验证。API响应是基于键的动态响应。如果是,那么,人的详细信息将被包括,如果是组织的详细信息将被包括在JSON响应中。所以响应可以是以下任何一种形式 我为验证上述2个场景而创建的架构如下 但是架构与实际响应不匹配。我应该对架构进行哪些更改才能使其工作?
我尝试运行一些测试,如果测试成功,则需要在每个场景结束时调用“”文件,但如果测试失败,则不应调用“”文件。 我测试结果如下所示: 如果响应代码为,则应运行命令“”,如果为,则应跳过此命令。 有人能帮我一下吗?