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