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

空手道-将部分Json与父项匹配

戴品
2023-03-14

下面是用于匹配的json示例;匹配包含不起作用。

* def Parent = [{ a: 1, b: 'x' }, { a: 2, b: 'y' }]
* def Part = [{ a: 1 }, { b: 'y' }]
* match Parent contains '#(^Part)'

# Below throws exception too.
* match Parent contains Part

它的投掷低于错误,

actual: [{"a":1,"b":"x"},{"a":2,"b":"y"}], expected: '#(^Part)', reason: actual value does not contain expected

共有1个答案

易昌翰
2023-03-14

以下是我认为最好的解决方案。慢慢来理解它;)

* def data = [{ a: 1 }, { b: 'y' }]
* def response = [{ a: 1, b: 'x' }, { a: 2, b: 'y' }]
* def expected = karate.map(data, function(x, i){ return '#(^data[' + i + '])' })
* match response contains only expected

因为我希望这个例子对其他人和其他人都有用,所以这里有一个替代解决方案,它也展示了0.9.0中新的动态场景概述。请注意,karate.map()是执行循环的一种方法,如果您查看文档和示例,还有其他方法。

Background:
  * def data = [{ a: 1 }, { b: 'y' }]
  * def parts = karate.map(data, function(x){ return { part: x } })
  * def response = [{ a: 1, b: 'x' }, { a: 2, b: 'y' }]

  Scenario Outline:
    * def part = <part>
    * match response contains '#(^part)'

    Examples:
      | parts |
 类似资料:
  • 我必须验证一个json是否包含另一个json,就像这个测试: 如果失败,则正确,如下所示? 谢谢

  • 我正在尝试验证具有可选键的复杂JSON 下面是完整的可执行特性文件 我想验证ValidJsonSchema,但无法绕过完整的模式匹配 当我尝试匹配可选字段时,我一直得到错误为 com.intuit.karate.exception.karateException:应在路径$中找到属性为[“MyArray”]的对象,但发现了“net.minidev.json.JsonArray”。根据JSONPro

  • 我95%的自动化框架是在空手道,工作得很好。我们需要检查应用程序日志中显示的中间结果的功能很少(不在Json响应中)。我写了一个外壳脚本,它在从邮递员手动发送请求后验证Linux机器上的应用程序日志。我使用eclipse的JSCH库调用这个脚本。 有没有什么方法可以让我从空手道发送请求,然后调用我的JSCH类进行验证,这样就可以避免手动发送请求的步骤? 谢谢,阿比

  • 问题内容: 在索引中,我有一个IP字段。字段的类型为“ ip”。 我想搜索所有以“ 192.168”开头的IP 我所有的尝试都失败了,并显示以下消息: 无法解析IP [192.168],不是有效的IP地址 有没有办法做到这一点,还是应该将字段的类型更改为“字符串”? 谢谢。 问题答案: 您可以使用范围查询,例如:

  • 我有以下API响应样本 根据上面的回答,我的测试表明,每当我点击API请求时,第11个ID是SMITH,第10个ID是JAMES 所以我想把它存储在一个表中,并根据实际的响应进行断言 现在我该如何一个接一个地匹配?与first类似,它解析API响应中的第一个ID和第一个名称,并与表first ID和表first name匹配 请分享从空手道做它的任何方便的方式

  • 我有以下两个响应,我需要检查(元素的顺序不同)。尝试了不同的事情,但没有任何结果。任何帮助都将不胜感激!