Karate API json 响应 - 如何验证有时出现有时不在 API 响应中的密钥的存在

2023-12-20

我需要帮助来验证响应中是否存在一个密钥。 API 的响应如下所示 -

"persons": [
        {
            "id": "27",
            "source": {
                "personId": 281,
                "emailAddress": "[email protected] /cdn-cgi/l/email-protection",
                "firstName": "Steve"
            }
        },
        {
            "id": "28", 
            "source": {
                "personId": 353,
                "emailAddress": "[email protected] /cdn-cgi/l/email-protection",
                "firstName": "John"
                "LastName" : "Cena"         
            }
        }
    ]
}

我想断言如果来源.姓氏无论出现与否,如果出现,那么它应该始终保存一个字符串值。

该解决方案应该是通用的,并且应该适用于 30 或 40 人的对象,目前我正在使用空手道版本 0.9.4,并且需要一个解决方案来处理此类情况。

提前致谢 !


在架构中"##string"验证该字段可以为空或字符串。

示例代码:

Feature: Schema validation

    Scenario:
        * def resp =
            """
            {
            "persons": [
                    {
                        "id": "27",
                        "source": {
                            "personId": 281,
                            "emailAddress": "[email protected] /cdn-cgi/l/email-protection",
                            "firstName": "Steve"
                        }
                    },
                    {
                        "id": "28", 
                        "source": {
                            "personId": 353,
                            "emailAddress": "[email protected] /cdn-cgi/l/email-protection",
                            "firstName": "John",
                            "LastName" : "Cena"         
                        }
                    }
                ]
            }
            """
        * def schema = 
        """
            {
                "id": "#string",
                "source": {
                    "personId": "#number",
                    "emailAddress": "#string",
                    "firstName": "#string",
                    "LastName": "##string"
                }
            }

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

Karate API json 响应 - 如何验证有时出现有时不在 API 响应中的密钥的存在 的相关文章

  • 输入上的 Key.ENTER 不提交

    我正在尝试空手道 并且有一个用例 我需要在搜索框中触发搜索 并且没有触发搜索的按钮 因此需要通过回车键触发 我尝试过多种不同的方式来尝试提供Key ENTER到输入以使其工作 但它们都没有触发它 我正在使用latest https gith
  • Java中JSONPath的基本使用

    我有 JSON 作为字符串和 JSONPath 作为字符串 我想使用 JSON 路径查询 JSON 以字符串形式获取结果 JSON 我认为Jayway 的 json path https code google com p json pat
  • 将 Json 传递给 karate-config.js 文件

    我有超过 6 个环境 我必须在这些环境中运行同一组 REST API 脚本 因此 我将所有测试数据和端点 资源路径存储在 json 文件中 然后 我尝试将此 json 文件读入我的 karate config js 文件 这是因为我想获取与
  • 空手道 - 有没有一种方法可以在字符串正则表达式中使用变量

    空手道 有没有一种方法可以在字符串正则表达式中使用变量 类似于下面的东西 match each productCodes regex i codes 任何替代方案或最佳实践将不胜感激 我试图从响应中获取一个字符串数组 以便每次进行匹配 一次
  • 您可以在标签中使用通配符来获取所有匹配的标签吗

    我想知道您是否可以使用带有标签的通配符来获取与特定模式匹配的所有标记场景 功能 例如 我在许多功能文件的许多场景中使用了 17 个唯一标签 模式是 jira CIS 后跟 4 个数字 例如 jira CIS 1234 和 jira CIS
  • Laravel Json 响应未按预期工作

    响应对象为空时无法获取响应 当对象返回数据时工作完美 public function show id associates Associate find by id id if count associates lt 1 output ar
  • 从各种 JSON 路径创建 JSON 对象

    我们需要从提供的各种 JSONPaths 创建 JSON 对象 例如 下面是要创建的新 JSON 对象中的两个路径以及该路径的值 student firstName Abc student subject physics mark 100
  • 空手道:遍历复杂的 JSON 来查找匹配项

    我正在访问 API 端点并得到如下所示的信息 emp id 123 firstNm test lastNm last dob 200 01 01 gender code F name Female description Female te
  • 在空手道和放心之间选择

    尝试在 Karate 框架和 Rest Assured 之间进行选择以实现 API 自动化 其中包括 Rest API 和 GraphQL 我们还可以增强框架来执行 UI 自动化 我经历了寻找的一般过程 Karate 是为 GraphQL
  • [空手道][独立]错误:无法找到或读取文件

    我只使用最新的独立空手道 jar 在配置了 JRE 的 docker 容器上测试我的 API 并且没有任何 Java 代码 目前 在我的一项功能中 我有这个 read file json 当资源文件与功能文件位于同一目录时 它可以正常工作
  • 在空手道中对包含重复元素的表执行通配符操作? [复制]

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

    在OpenShift中 是否有一种更优雅的方式来获取应用程序中最近创建的pod的名称my app比这个 name oc get pods l app my app o jsonpath range items status startTim
  • 如何在空手道中运行单个场景?

    为了测试空手道的特定功能 我运行 mvn test Dkarate options classpath myfeature feature 有没有办法运行定义到功能中的单个场景 是的 您可以通过标签 https github com int
  • Hamcrest 与 MockMvc:检查键是否存在,但值可能为空

    我正在使用 MockMvc 进行一些测试 我想验证 JSON 响应的结构 具体来说 我想确保属性的键存在 并且值是某种类型或为 null keyToNull null This may be null or a String keyToSt
  • 使用 JSONPath 解析 JSON 属性内的 JSON

    我有一个 JSON 列表 其中每个元素的属性之一恰好是 JSON 本身 它来自于糟糕的前期设计 但事实就是如此 我想查询元素中包含的 JSON 字符串内的不同属性 这是一个例子 只有一项 我手写了代码 但相信我 通过生成它的方式 它在生产中
  • 空手道 - 使用 Javascript 从 元素获取 URL

    使用空手道 我需要从标签 href 中提取 url 我直接在浏览器中使用 Javascript 尝试过 document querySelector a rel noopener href 它在浏览器中工作正常 我收到完整的 url 地址
  • 使用 Newtonsoft.Json.NET 搜索 JSON 根对象的正确 JsonPath 表达式是什么?

    大多数例子涉及Stefan G ssner 的书店示例 http goessner net articles JsonPath index html e3 但是我正在努力为简单对象 无数组 定义正确的 JsonPath 表达式 Id 1 N
  • 从 JSONPath 中的过滤表达式中选取第 N 个项目

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

    空手道和 Azure 新手 刚刚使用空手道创建了一些 API 测试 而且很简单 想要进一步添加 Azure 管道 找到了一些仅指向添加 Microsoft 的 pom xml 和 maven 的链接 还发现了 Jekins 集成 但没有适用
  • 在 java 文件中使用 karate-config 参数

    空手道中是否有可能重用 java 文件中 karat config js 中的参数 使用构造函数初始化值 因为任何东西都从返回karate config js在任何场景下任何时间都可用 只需实例化 Java 类并在构造函数中传递您需要的任何

随机推荐