conditional - 是否可以在条件语句中使用空手道“匹配”?
问题描述
在此处找到示例。
def a = condition ? " karate match statement " : "karate match statement"
有可能做这样的事情吗?
解决方案
这不是测试的推荐做法,因为测试应该是确定性的。
正确的做法是:
- 精心设计您的请求,以使响应 100% 可预测。不要担心代码重复,这有时是测试所必需的
- 如果动态数据与
Scenario
- 使用条件逻辑来设置“预期值”变量,而不是使您的
match
逻辑复杂化 - 对 JSON 的特定部分使用自我验证表达式或模式验证表达式
- 使用
if
关键字并调用第二个功能文件- 或者您甚至可以设置文件名以通过变量动态调用 - 在某些情况下
karate.abort()
可用于有条件地跳过/提前退出
也就是说,如果你真的坚持在同一流程中执行此操作,空手道允许你match
在 0.9.6.RC4 及更高版本中通过 JS 执行此操作。
有关详细信息,请参阅此线程:https ://github.com/intuit/karate/issues/1202#issuecomment-653632397
的结果karate.match()
将返回一个 JSON 格式{ pass: '#boolean', message: '#string' }
如果上述选项都不起作用 - 这意味着您正在做一些非常复杂的事情,所以编写 Java 互操作/代码来处理这个