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

如何使用空手道框架检查json模式中是否存在属性值

羊舌子瑜
2023-03-14

我可以有一个回应:

 { id: '123', name: 'foo' }` 

如果用户没有狗

或者

{ id: '123', name: 'foo', dog: {id: '123', color: 'brown'} }`

如果用户有狗。

在我的特写中,我有:

* def schema = { id: '#string', name: '#string', dog: {id: '#string', color: '#string'} }`
* match response == schema

prb是指如果我有一个没有狗的用户响应,我有以下错误:

path: $[0].dog, actual: null, expected: {id=#string, label=#string}, reason: actual value is null

如何检查模式中的属性“dog”?谢谢

共有1个答案

郭阳曜
2023-03-14

不可能在一个步骤中完成此操作,另请参阅架构验证文档:

* def dogSchema = { id: '#string', color: '#string' }
* def schema = { id: '#string', name: '#string', dog: '##object' }

* def response1 = { id: '123', name: 'foo' }
* match response1 == schema
* match response1 contains { dog: '##(dogSchema)' }

* def response2 = { id: '123', name: 'foo', dog: { id: '123', color: 'brown' } }
* match response2 == schema
* match response1 contains { dog: '##(dogSchema)' }

编辑:这很尴尬,我意识到这个技巧没有很好的记录:

* def dogSchema = { id: '#string', color: '#string' }
* def schema = { id: '#string', name: '#string', dog: "#('##(dogSchema)')" }

* def response1 = { id: '123', name: 'foo' }
* match response1 == schema

* def response2 = { id: '123', name: 'foo', dog: { id: '123', color: 'brown' } }
* match response2 == schema

Edit2:这将在下一版本中得到改进:https://github.com/intuit/karate/issues/248

 类似资料:
  • 以下是我的示例功能文件: 有没有一种方法可以使用空手道表达式检查状态是主动还是不主动? 注意:它肯定可以通过编写托管JS函数来实现。

  • 样本响应 示例要素文件 有没有办法用空手道表情来检查状态是活动的还是不活动的? 注意:可以通过编写自定义JS函数来实现。

  • 我想使用“faker”库在JSON文件中生成假数据,如下所示。 空手道配置。js,我做了以下工作: 在sample.json: 但我在“空手道配置”中遇到了类似“找不到”require“关键字的错误。js' 请帮忙。

  • 使用空手道框架,我如何确保persons数组下的personId不应作为重复值出现 如果您看到下面的响应,id: 1记录有重复的个人ID,因此在这种情况下,我的测试应该失败。此外,人数组本质上是动态的,可能有一些记录也包含4个人以上。 因此,一个通用的方法应该是有帮助的。请帮忙。

  • 我试图验证一个json响应与空手道json模式验证。我已经在许多方面多次使用它,在这个简单的例子中,我无法理解哪里出了问题。以下是我得到的回应: 下面是模式: 当我试图验证它:*匹配每个响应==clientSchema 错误是:路径$[0]['房间']中缺少属性,这让我发疯,我找不到。

  • 英文版的情景工作完美。但是在俄文版本中,它看起来像是空手道FeatureParser不知道本地化的标记而失败了。以下是错误日志: 特征文件的英文版本: 特写文件的俄文版本: 我该怎么做才能修好它?