【问题标题】:Embedded expression (JSON/YML) with default value具有默认值的嵌入式表达式 (JSON/YML)
【发布时间】:2021-07-21 16:44:11
【问题描述】:

Karate 提供了一种 API 方法 get 来获取变量值或默认值,如果前者不存在 karate.get("anyVariable", "default value")强>。

我想知道是否有任何类似的行为适用于 read JSON 或 YML 文件中的嵌入表达式,或者只是声明一个模仿此类功能的新 json 变量。 p>

我一直在阅读文档并尝试了一些类似的东西:

* def defaultvar = { key: #(notdefinedvariable || 'defaultValue') }

或在外部 yml 文件中,如下所示:

id: 1
random: '#(somevariable)'
defaultvale: '#(notdefinedvariable || defaultValue)'

我尝试了一些不同的组合和表达方式都没有成功,所以我真的不知道它是否被支持。我认为这很有用,如果需要,我会做出贡献。

谢谢。

【问题讨论】:

    标签: karate


    【解决方案1】:

    实际上karate.get() 在嵌入式表达式中是“可用的”,因此您可以在 JSON 文件中执行此操作:

    {
        "foo": "#(karate.get('foo', 'default'))"
    }
    

    我个人觉得你应该在读取文件之前预先设置任何变量和默认值,就像这样:

    * def foo = karate.get('foo', 'default')
    * def response = read('test.json')
    

    还有文件:

    {
        "foo": "#(foo)"
    }
    

    是的,如果你不想输入这么多字符和做更多逻辑,你可以定义一个自定义函数,但我认为这不会为你节省太多:

    * def getOr = function(x, y){ return karate.get(x, y) }
    * def response = read('test.json')
    

    然后是 JSON 文件:

    {
        "foo": "#(getOr('foo', 'default'))"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-18
      • 1970-01-01
      • 2013-06-18
      • 1970-01-01
      • 1970-01-01
      • 2021-11-18
      相关资源
      最近更新 更多