Pal*_*sky 2 java bash intuit karate
我正在尝试使用空手道执行 bash 脚本。我可以从 karate-config.js 和 .feature 文件执行脚本。我还可以将参数传递给脚本。问题是,如果脚本失败(以 0 以外的其他值退出),测试执行会继续并成功完成。
我发现当脚本回显某些内容时,我可以通过脚本访问它,因此我可能会回显退出值并对其进行断言(在某些可重用功能中),但这似乎是一种解决方法而不是有效的清洁解决方案。有没有一些干净的方法来访问退出代码而不回显它?我错过了什么吗?
脚本
#!/bin/bash
#possible solution
#echo 3
exit 3;
Run Code Online (Sandbox Code Playgroud)
空手道-config.js
var result = karate.exec('script.sh arg1')
Run Code Online (Sandbox Code Playgroud)
特征文件
def result = karate.exec('script.sh arg1')
Run Code Online (Sandbox Code Playgroud)
好时机。我们最近为 CLI 测试做了一些工作,我相信你可以有效地使用它们。这是 Twitter 上的一个线程:https : //twitter.com/maxandersen/status/1276431309276151814
我们刚刚发布了 0.9.6.RC4 版本和新版本,我们有一个新karate.fork()选项可以返回一个实例Command,您可以在其上调用exitCode
下面是一个例子:
* def proc = karate.fork('script.sh arg1')
* proc.waitSync()
* match proc.exitCode == 0
Run Code Online (Sandbox Code Playgroud)
你可以在这里得到更多的想法:https : //github.com/intuit/karate/issues/1191#issuecomment-650087023
请注意, to 的参数karate.fork()可以采用多种形式
['script.sh', 'arg1']line - 字符串(或)args - 字符串数组env - 可选的环境属性(作为 JSON)redirectErrorStream - 布尔值,默认为真,这意味着 Sys.err 出现在 Sys.out 中useShell- 默认 false,自动添加cmd /c或sh -c取决于操作系统并且由于karate.fork()是异步的,您需要在需要时调用waitSync(),如上例所示。
请提供反馈,如果需要,我们可以进一步调整。
编辑:这是一个非常高级的例子,展示了如何监听进程输出/日志,收集日志,并有条件地退出: fork-listener.feature
| 归档时间: |
|
| 查看次数: |
1194 次 |
| 最近记录: |