当前位置: 首页 > 知识库问答 >
问题:

最好的方法做空手道比赛使用“==”和“包含”使用通用脚本

邵伟
2023-03-14

这个问题源于前面的一个问题

假设我们实现的服务器v1和v2响应如下

* def v1Response = { id: "1", name: "awesome" }
* def v2Response = { id: "2", name: "awesome", value: "karate" }

类似地,我们定义v1和v2的客户机模式如下

* def v1Schema = { id: "#string", name: "#string }
* def v2Schema = { id: "#string", name: "#string, value: "#string" }

根据以上给定的数据,我只想在一个通用行中测试以下三种情况,它们必须通过测试

1. * match v1Response == v1Schema
2. * match v2Response == v2Schema 
3. * match v2Response contains v1Schema

使用一个通用行,如下所示

* match response ==/contains schema <--- should be able to test all above three cases above and they must pass. 

关于实现这一目标的可能方法,请参阅我在先前问题中提出的建议。

我已经使用karate.filterKeys()尝试了上一个问题中提到的解决方案,但是第三个案例将失败,因为它关注的是筛选键,而不是比较本身,所以下面最后一行将无法测试上面所有三个案例。

* def response = { id: "2", name: "awesome", value: "karate" } 
* def schema = { id: "#string", name: "#string" } 
* match response == karate.filterKeys(schema, response) <--- This will fail

要得到一个公认的答案,这三个案子都必须通过

共有1个答案

焦同
2023-03-14

看起来你设计得太过火了以至于忘记了包含的内容:P

* def schemas =
"""
{
  v1: { id: "#string", name: "#string" },
  v2: { id: "#string", name: "#string", value: "#string" }
}
"""

* def env = 'v1'
* def response = { id: "1", name: "awesome" }
* match response contains karate.filterKeys(schemas[env], response)

* def response = { id: "2", name: "awesome", value: "karate" }
* match response contains karate.filterKeys(schemas[env], response)

* def env = 'v2'
* def response = { id: "1", name: "awesome" }
* match response contains karate.filterKeys(schemas[env], response)

* def response = { id: "2", name: "awesome", value: "karate" }
* match response contains karate.filterKeys(schemas[env], response)

 类似资料:
  • 我使用模式验证来验证响应,值返回一个数字或“NA”,下面是响应和模式验证。 收到错误消息: 如何纠正匹配表达式?

  • 我有一个要求,取决于地图的特定键值,我需要格式化输出。 例如,如果它的值大于1,那么只需要在值(12.23)后面显示2个小数点,或者如果它的值小于1,我需要在它后面显示4个小数点。 我已经编写了代码,它工作正常,但我正在寻找一种更好的方法来做到这一点(基本上我不喜欢我的代码中的其他条件) 这是我的程序,根据最后一个属性键值,我正在格式化输出

  • 使用intuit/空手道的API测试之一, 预期的JSON是: API响应有两种可能。 第一个可能的实际JSON: 第二种可能的实际JSON: 同样,阵列元素的序列在实际响应中是不同的,因此遵循响应验证的方法随机抛出错误。 和响应== 有时错误被抛出为:错误:{Actual:response.config[0].abc,应为:response.config[0].qwe} 有时会抛出错误:错误:{

  • 编辑: 我找到了另一个解决这个问题的方法。如果我们给一个键,它是,我们可以如下所示显示快捷键,而不需要将主体封装在小部件中。但是,返回的小部件应该是一个有状态的小部件。

  • 这是这里提到的一个问题的后续 假设我们实现的服务器v1和v2响应如下 类似地,我们定义v1和v2的客户机模式如下 我们在通用场景中实现模式验证,如下所示。我们可以很容易地使用v1Response/v2Response设置“response”,使用v1Schema/v2Schema设置“schema”,具体取决于我们的环境。 只要我们针对v1客户机测试v1服务器,或者针对v2客户机测试v2服务器,上

  • 使用cursors来获取android所保存的图像,需要对cursors进行外部存储授权。如果AndroidOS是6.0或更高版本,并且没有获得授权许可,申请将被终止。如果获得权限,则需要进行关闭游标的处理。 如果是Java,那么最好按照以下方式编写onStop,除了Kotlin,将会引发一个异常。 如果你能给我建议如何写得最好,我会很高兴的。 下面是使用的代码: