空手道 DSL - 使用重试直到检查数组,直到所有项目中都存在特定的键值对[重复]

Posted

技术标签:

【中文标题】空手道 DSL - 使用重试直到检查数组,直到所有项目中都存在特定的键值对[重复]【英文标题】:Karate DSL - Using retry until to check an array until a specific key-value pair is present in all items [duplicate] 【发布时间】:2021-11-12 06:59:42 【问题描述】:

所以我有一个结构与下面的示例类似的响应。 Key2 最终将更改为一个值,这意味着我的测试可以继续,所以我想通过使用 retry until 确保 Key2 的所有值最终都是“测试”。我尝试按照文档进行操作,但运气不佳。


    "Array": [

        
            "Key1": "Value1",
            "Key2": "Test"
        ,
        
            "Key1": "Value1",
            "Key2": "Test"
        
    ]

任何帮助都会很棒。谢谢。

解决方案:

And retry until karate.match("each response.Array contains  Key2: 'Test' ").pass

【问题讨论】:

下一次,请尊重那些试图帮助您并使您的 JSON 格式正确且有效的人。现在不是。 【参考方案1】:

试试这个,了解它的工作原理,然后你就会知道该怎么做:

* def response = 
"""

    "Array": [
        
            "Key1": "Value1",
            "Key2": "Test"
        ,
        
            "Key1": "Value1",
            "Key2": "Test"
        
    ]

"""
* def result = karate.match("each response..Key2 == 'Test'")
* assert result.pass

【讨论】:

感谢您的评论。首先为我的格式错误的 json 道歉。 response..Key2 也会捡起埋在树里的任何钥匙,对吧?我有相同的键嵌套更深,代表不同的东西,所以理想情况下我想忽略它,只检查 Array[*].Key2 级别的键。 @SDewar 试试看。然后根据需要阅读文档,搜索“json path” 干杯。使以下工作可靠。 - 然后重试直到 karate.match("each response.Array contains Key2: 'Test' ").pass - 以防万一其他人遇到同样的问题。

以上是关于空手道 DSL - 使用重试直到检查数组,直到所有项目中都存在特定的键值对[重复]的主要内容,如果未能解决你的问题,请参考以下文章

空手道 DSL 框架是不是能够将 POST 请求作为 url 编码格式传递?

RxSwift - 使用 maxCount 重试网络请求直到成功

空手道:有没有办法在使用重试时禁用日志?

空手道 DSL:获取连接超时错误

在空手道 DSL 中,如何在 java 参数调用中传递变量时转义单引号

Spring Optimistic Locking:如何重试事务方法直到提交成功