是否可以在条件语句中使用空手道“匹配”?

Posted

技术标签:

【中文标题】是否可以在条件语句中使用空手道“匹配”?【英文标题】:Is it possible to use karate 'match' inside conditional statement? 【发布时间】:2018-10-25 04:40:16 【问题描述】:

在此处查找示例。

def a = condition ? " karate match statement " : "karate match statement"

有可能做这样的事情吗??

【问题讨论】:

【参考方案1】:

这不是测试的推荐做法,因为tests should be deterministic。

正确的做法是:

精心设计您的请求,使响应 100% 可预测。不要担心代码重复,这是sometimes necessary for tests 如果动态数据与Scenario 无关,则忽略它 使用conditional logic 设置“预期值”变量,而不是使match 逻辑复杂化 对 JSON 的特定部分使用 self-validation expressions 或 schema-validation expressions 使用if 关键字和call a second feature file - 或者您甚至可以设置文件名以通过变量动态调用 在某些情况下,karate.abort() 可用于有条件地提前跳过/退出

也就是说,如果你真的坚持在相同流程中这样做,空手道允许你在 0.9.6.RC4 以后通过 JS 执行 match

详情见本帖:https://github.com/intuit/karate/issues/1202#issuecomment-653632397

karate.match() 的结果将返回格式为 pass: '#boolean', message: '#string' 的 JSON

如果上述选项都不起作用 - 这意味着您正在做的事情真的很复杂,所以write Java interop / code 来处理这个

【讨论】:

我想检查某个 JSON 中的键名,然后仅当 json 中存在该键时才进行断言,为此我想使用 match 语句。所以我想使用这种条件语句。我将通过更新版本的空手道来利用上述示例。谢谢。 * if (response != [] || '') karate.call('/features/PASE/helper/ServiceAddressessHelper.feature@BaseScenarioserviceAddressess5') 这是 ServiceAddressessHelper.feature 文件功能:辅助功能@BaseScenarioServiceAddressess5 场景:助手场景 * 匹配每个响应 == expectedResponseServiceAddressess 这不起作用。我无法弄清楚。如何从测试功能文件中传递“响应” @VirenderKamboj 请遵循此流程:github.com/intuit/karate/wiki/How-to-Submit-an-Issue

以上是关于是否可以在条件语句中使用空手道“匹配”?的主要内容,如果未能解决你的问题,请参考以下文章

where条件放在子SQL语句中是否查询速度更快?

Java if else语句

如何使用 Exists 语句以及主表上的条件获取匹配记录

是否有任何规则可以在条件/案例表达式中使用sql语句子句的哪一部分?

14Shell脚本—判断语句

Go语言第五篇:Go条件语句