具有默认值的嵌入表达式 (JSON/YML)
Embedded expression (JSON/YML) with default value
空手道提供了一个 API 方法 get 来获取变量值或默认值,如果前者不存在 karate.get("anyVariable", "默认值").
我想知道是否有任何类似的行为适用于 read JSON 或 YML 文件中的嵌入表达式,或者只是声明一个新的 json 模仿这些特征的变量。
我一直在阅读文档并尝试像这样的东西:
* def defaultvar = { key: #(notdefinedvariable || 'defaultValue') }
或在外部 yml 文件中,如下所示:
id: 1
random: '#(somevariable)'
defaultvale: '#(notdefinedvariable || defaultValue)'
我尝试了一些不同的组合和表达方式,但都没有成功,所以我不知道是否支持。我认为会很有用,如果需要我会做出贡献。
谢谢。
实际上 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'))"
}
空手道提供了一个 API 方法 get 来获取变量值或默认值,如果前者不存在 karate.get("anyVariable", "默认值").
我想知道是否有任何类似的行为适用于 read JSON 或 YML 文件中的嵌入表达式,或者只是声明一个新的 json 模仿这些特征的变量。
我一直在阅读文档并尝试像这样的东西:
* def defaultvar = { key: #(notdefinedvariable || 'defaultValue') }
或在外部 yml 文件中,如下所示:
id: 1
random: '#(somevariable)'
defaultvale: '#(notdefinedvariable || defaultValue)'
我尝试了一些不同的组合和表达方式,但都没有成功,所以我不知道是否支持。我认为会很有用,如果需要我会做出贡献。
谢谢。
实际上 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'))"
}