当前位置: 首页 > 知识库问答 >
问题:

如何使用空手道执行bash脚本并在脚本失败时失败

楮星鹏
2023-03-14

我正在尝试使用空手道执行bash脚本。我可以从karate-config.js和.feature文件中执行脚本。我还可以将参数传递给脚本。问题是,如果脚本失败(以0以外的其他东西退出),测试执行将继续并以SuccesFull结束。

我发现当脚本回显时,我可以作为脚本的结果访问它,这样我就可以回显退出值并对其进行断言(在一些可重用的特性中),但这似乎是一个变通方法,而不是一个有效的干净解决方案。有没有什么干净的方法可以访问退出代码而不回显它呢?我是不是漏了什么?

脚本

#!/bin/bash

#possible solution
#echo 3

exit 3;

空手道-config.js

var result = karate.exec('script.sh arg1')

提取文件

def result = karate.exec('script.sh arg1')

共有1个答案

谢叶五
2023-03-14

好时机。我们最近在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

您可以在这里获得更多的想法:https://github.com/intuit/karate/issues/1191#issuecomment-650087023

请注意,karate.fork()的参数可以采用多种形式

    null

编辑:下面是一个非常高级的示例,演示如何监听进程输出/日志、收集日志并有条件地退出:fork-listener.feature

 类似资料:
  • 我的响应数据包含文本

  • 我有一个用LiquiBase创建DB模式的glassfish应用程序。我已经将相同的应用程序迁移到Spring Boot。我没有删除DB架构。当我部署Spring应用程序并运行liquibase脚本时,我得到 更新:这可能与changelog文件中存储的MD5总和有关吗?所以新应用程序计算的md5与旧应用程序计算的md5不匹配,脚本被触发,导致明显的异常? 多谢

  • 我试图从一个简单的BASH脚本执行一个简单的PHP脚本。这个网站上的答案不能回答我的问题。 这是我的BASH脚本 这是我的PHP脚本 从命令行运行BASH脚本时,出现以下错误。 我试过键入/usr/bin/php-q/home/username/subfolder/durable2。这很好。它跑起来了

  • 我试图将selenium test之一迁移到空手道,同时这样做我正在使用在留档中定义的script()方法,该方法在空手道中用于评估给定字符串为浏览器内的JavaScript,但我得到了这个 还分享我的功能文件,其中得到失败: 甚至我也试着在脚本中调用下面的语句,但仍然得到相同的错误 我正在使用gatling版本

  • 问题内容: 我有一些要自动执行的SQL脚本。过去,我使用过SQL * Plus,并从bash脚本中手动调用了sqlplus二进制文件。 但是,我试图找出是否有一种方法可以连接到数据库,并从bash脚本内部调用该脚本……以便我可以插入查询并使查询相对于特定天数运行过去。 问题答案: 我有点困惑。您应该能够从bash脚本中调用sqlplus。这可能就是您在第一个陈述中所做的 尝试在bash脚本中执行以

  • 问题内容: 我使用的测试脚本包含很多命令,并且会生成大量输出,我使用或和,所以脚本会在发生错误时停止。但是,我仍然很难定位执行停止在哪一行以定位问题。有没有一种方法可以在执行每行之前输出脚本的行号?还是输出命令产生之前的行号?否则任何可以解决我的脚本行位置问题的方法都将提供很大的帮助。谢谢。 问题答案: 您提到您已经在使用。该变量表示值是设置选项时在回显命令行之前打印的提示,默认情况下为空格。 您