Cucumber语言 - 在 Jenkins 中重新运行失败的测试



我们通过 Jenkins 服务器运行一组 Frank/Cucumber 测试来测试 iOS 应用程序。

测试在本地运行

得很好,也可以在 jenkins 服务器上手动运行时运行。但是,在浏览 jenkins 时,我们偶尔会出现导致构建失败的错误,然后当我们再次运行 jenkins(即按"立即构建"按钮(而不更改任何内容时,这些错误可以正常工作。

我们运行以下代码来运行测试:

cucumber features/ipad --tags ~@ignore

然后,我添加了 rerun 参数以将失败的测试转储到文本文件中:

-f rerun -o rerun.txt

然后直接运行黄瓜重新运行.txt然后直接运行,所以我整个 comman 看起来像这样:

cucumber features/ipad --tags ~@ignore -f rerun -o rerun.txt; cucumber @rerun.txt

这工作正常,它会捕获失败的测试,并在其他测试后再次重新运行它们。

但是,即使重新运行通过,Jenkins 仍然将构建标记为失败。

有没有办法告诉 Cucumber 或 jenkins 忽略第一次测试运行,只将重新运行的测试标记为通过或失败?

还是有更整洁的方法可以解决这个问题?

谢谢

jenkins 脚本非常简单。当脚本失败时,即具有非零退出代码,生成将失败。

此外,如果您使用 junit 插件发布结果,请确保插件在结果中发现失败的测试时不会使您的构建失败。

但是,请尝试找到测试失败的原因。始终获取测试运行的应用程序日志,并检查其中发生的情况。如果自动测试不可靠,请使用手动测试。

此外,每当测试失败时,您可以使用黄瓜钩截取屏幕截图。当您尝试了解失败的测试时,这是一个很大的帮助。

对不起,如果我无知或不了解黄瓜的哲学,但考试失败通常是有原因的。通常,找出测试失败的原因,然后修复该问题(或测试(。

为了更直接地回答您的问题,您可以检查日志解析器插件。我的直觉告诉我,当测试用例失败时,Jenkins 正确地将作业标记为失败(或者更好的是不稳定(。

为什么

你不尝试使用groovy来获得测试结果

def getResults(){
AbstractTestResultAction testResultAction = currentBuild.rawBuild.getAction(AbstractTestResultAction.class)
               def failCount = null
               def failureDiffString = null
               def totalCount = null
               def passed = null
               def passrate = null
               if (testResultAction != null) {
                   failCount = testResultAction.failCount
                   totalCount = testResultAction.totalCount
                   passed = totalCount - failCount
                   passrate = (passed/totalCount*100).toInteger()
                  }
           return passrate
}

你可以使用这样的东西:

if(getResults() >= 95){
    currentBuild.result="SUCCESS"
    } else {
        currentBuild.result="FAILED"
        throw new Exception("Pass rate lower than 95%")
    }

相关内容

  • 没有找到相关文章

最新更新