空手道:JsonPath 通配符不起作用或部分不起作用

2024-01-04

JSON 文件jsonExample:

{
  "store": {
    "book": [
      {
        "category": "fiction",
        "author": "Evelyn Waugh",
        "title": "Sword of Honour",
        "something": 12.99
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  },
  "expensive": 10
}

我要更新"something"。当我使用时:

1) * set jsonExample $.store.book[0].something = 13- 这是工作

2) * set jsonExample $..book[0].something = 13- 这是工作

3) * eval jsonExample.store.book[0].something = 13- 这是工作

BUT

1) * set jsonExample $..something = 13- 这是NOT working

2) * eval jsonExample..something = 13- 这是NOT working

我明白那个set不适用于通配符($[*].foo or $..foo)。但是通配符可以与 eval 一起使用吗?如果是,怎么办?请根据文件举例jsonExample above.


我不明白你为什么这么关心这个。通配符不适用于updatingJSON。就是这么简单。

还有一件事情,eval仅适用于纯 JS。 Json 路径是NOT纯JS。

也许这会解释得更清楚。

If * set jsonExample $..book[0].something = 13正在运行,请假定这是一个 BUG。不要依赖它。在这种情况下它可能会起作用,因为代码尽可能具有弹性。但它可能不适用于其他情况或未来版本的空手道。

以下所有内容都将起作用:

* def jsonExample =
"""
{
  "store": {
    "book": [
      {
        "category": "fiction",
        "author": "Evelyn Waugh",
        "title": "Sword of Honour",
        "something": 12.99
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  },
  "expensive": 10
}
"""
# all these will work
* set jsonExample $.store.book[0].something = 13
* match jsonExample.store.book[0].something == 13

* set jsonExample.store.book[0].something = 14
* match jsonExample.store.book[0].something == 14

* eval jsonExample.store.book[0].something = 15
* match jsonExample.store.book[0].something == 15

我真的希望这能说明白!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

空手道:JsonPath 通配符不起作用或部分不起作用 的相关文章

  • 空手道 - 如何检查数组是否包含值?

    Given 我已经定义了数组 def array code codeA boolValue false a 5 c false code codeA boolValue true a 7 c true code codeB boolValu
  • 如何通过单独的功能文件迭代参数列表?

    如何通过传递 id 列表来迭代它 我在 foo 变量中有多个 id 我想调用删除项目 feature对于该 foo 变量中可用的每个 id 项目 特征 def foo get response data id def del call re
  • 不使用其他特征文件调用的条件

    使用空手道 我想知道是否可以设置 If 条件而无需调用不同的功能文件 并且不使用 JavaScript gt 在条件中使用空手道功能文件代码块 例如应该可以做类似的事情吗 if variable 1 delay 3000 retry cli
  • 空手道 - 如何在 java 文件中使用 karate-config.js 变量?

    我有一个 DB utils java 文件 我需要根据运行代码的环境加载数据库用户名密码 并且需要从 karate config js 导入这些环境值 如何实现这一目标 只需使用嵌入表达式即可 所以如果你有dbusername and db
  • 如何创建动态路径组件并结合重试直到

    我有一个用例 我需要首先调用 API 来获取 ID 列表 从该响应中选择一个随机 ID 接下来 我调用第二个 API 它使用随机 ID 作为路径中的组件 第二个 API 调用可能会返回空响 应 因此我想利用retry until但在每次重试
  • 如何动态删除空手道中的json密钥?

    我正在尝试根据条件删除一些 json 键 下面没起作用 def body if condition true remove body path1 path2 key or def body condition true remove bod
  • 使用 php jsonpath 解析 JSON

    我正在尝试使用 jsonpath 解析 PHP 中的 JSON 我的 JSON 来自于此 https servizionline sanita fvg it tempiAttesaService tempiAttesaPs https se
  • 如何在PostgreSQL中使用jsonPath修改字段?

    如何在 PostgreSQL 中使用 jsonPath 修改字段 如 SQL Server JSON MODIFY https learn microsoft com en us sql t sql functions json modif
  • 在空手道中对包含重复元素的表执行通配符操作? [复制]

    这个问题在这里已经有答案了 我遇到了这样一种情况 需要在断言用户输入后单击图标 如果有一些唯一标识符 事情就非常简单 例如使用 rightOf UniqueIdentifier find i click 达到了目的 也可以很好地工作 scr
  • 如何在 JsonPath 中过滤非数组

    使用以下 JSON 来自http jsonpath com http jsonpath com firstName John lastName doe age 26 address streetAddress naist street ci
  • 如何处理空手道测试中的签名请求?

    首先 感谢构建空手道 它对于测试 API 和 UI 非常有用 我们正在使用它来测试许多端点 但我们想知道是否有一种方法或哪种方法是处理带有签名作为标头中请求的一部分的请求的最佳方法 在我们的例子中 我们有两个标头 ApiKey 这个值总是相
  • 处理空手道 UI 场景中的基本身份验证

    我刚刚开始实现空手道 UI v0 9 5 已经使用空手道实现了 api 测试 并且效果完美 遵循此页面上的 HTTP 基本身份验证策略 https github com intuit karate http basic authentica
  • 复杂 json 中的嵌入表达式未正确替换

    在空手道测试中 我们能够替换 json 中单个键的嵌入表达式 但是当尝试替换 json 的复杂键时它不起作用 输入 json integration serviceData integrationService name integrati
  • 如何匹配空手道中嵌套 json 对象中的动态键?

    尝试匹配空手道框架中 API 响应中的嵌套 json 对象 以下是我的 API 响应 status code 0 message Successful data PHX name Phoenix All city code PHX coun
  • Java中使用JsonPath解析JSON

    我是 Json Path 的新手 我已将 json path 0 8 0 jar 添加到我的 Eclipse 构建路径中 我从以下位置复制了 JSON http code google com p json path http code g
  • 使用 JSONPath 解析 JSON 属性内的 JSON

    我有一个 JSON 列表 其中每个元素的属性之一恰好是 JSON 本身 它来自于糟糕的前期设计 但事实就是如此 我想查询元素中包含的 JSON 字符串内的不同属性 这是一个例子 只有一项 我手写了代码 但相信我 通过生成它的方式 它在生产中
  • 使用 match every contains 进行 json 数组项断言

    我想在响应数组下的每个项目中添加包含 训练 的技能数组断言 我怎样才能使用匹配每种格式来做到这一点 match each response contains password abc123 不使用 JsonPath 表达式 我预计下面的示例
  • 在空手道 DSL 功能文件中使用模拟并独立运行

    我有 REST 服务 用不同于 Java 的语言编写 它与其他 REST 服务几乎没有依赖关系 例如正在开发和测试的服务是A 其他服务分别是B and C 我想运行系统测试A 一些测试需要B or and C在线并执行查询A 我编写了 b
  • 如何使用模式验证空手道中的多个可能值

    我目前正在使用 Swagger 模式 它定义了多个值的枚举 我想知道如何针对我的傲慢文件做出回应 我想确保返回的响应值只是架构中指定的值之一 想想 Swagger 中的枚举 如果响应中返回了架构内数组中未定义的任何其他内容 则测试应该失败
  • 从 JSONPath 中的过滤表达式中选取第 N 个项目

    我一直在尝试使用 JSONPath 过滤 JSON 中的特定元素 然后仅选择返回的结果数组中的第一项 我的基本 JSONPath 看起来像这样 store book category fiction price 我想添加这个 0 像这样过滤

随机推荐