空手道:在一种情况下获得验证JSON和数组密钥的问题

问题描述 投票:0回答:1

我正在使用空手道进行API测试,我目前的要求是,我只需要编写一个方案并处理两个响应即可。我的意思是我的响应有时返回json对象,有时返回json对象数组。

例如:端点的第一次执行返回响应-{“ id”:123,“名称:“ mytest”,“ Loc:“美国”}

并且在下一次执行期间,同一端点返回Response-[{“ id”:123,“名称:“ mytest”,“ Loc:“美国”},{“ id”:456,“名称:“ mytest1”,“ Loc:“英国”}]

我的用例是比较可用的键应为['id','name','Loc']

起初它只是返回一个json,所以我使用了karate.keysOf(response),它工作正常。现在我需要在一个场景中处理我自己的两个用例,因为它可能返回json或json数组,并且我需要检查存在的键-如果json然后仅检查一次,如果array然后检查array中的所有json对象。我知道有单独进行此操作的方法,但不确定是否可以合并到一个用例中有没有一种方法可以让responseType是json或数组,并用条件或可以用我的用例处理的任何方式编写两个单独的代码。

任何帮助将不胜感激。预先谢谢你。

arrays json karate web-api-testing
1个回答
0
投票

您可以使用模式进行处理,

# schmea for single json object
* def schema = {'id':'#present', 'Name' : '#present', 'Loc' : "#present"}

# determine if it an Json Array or object and set expected schema
* def expectedSchema = (karate.match(response, "#array").pass) ? "#[] schema" : schema

* match response == expectedSchema
© www.soinside.com 2019 - 2024. All rights reserved.