黄瓜 - 重新运行Jenkins的测试失败

时间:2013-09-26 15:19:42

标签: ios testing jenkins cucumber frank

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

测试在本地运行正常,并且在jenkins服务器上手动运行时也是如此。然而,当经历jenkins时,我们偶尔会遇到错误导致构建失败,然后当我们再次运行jenkins(即按下“立即构建”按钮)而不改变任何内容时工作正常。

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

cucumber features/ipad --tags ~@ignore

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

-f rerun -o rerun.txt

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

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

这样可以正常运行,它可以捕获失败的测试,并在其他测试后重新运行它们。

然而,即使重新运行,jenkins仍然将构建标记为失败。

有没有办法告诉黄瓜或詹金斯忽略第一次测试运行,只将重新运行测试标记为通过或失败?

或者有更简洁的方法吗?

由于

3 个答案:

答案 0 :(得分:4)

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

此外,如果您使用junit插件发布结果,请确保在结果中找到测试失败时插件未失败。

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

此外,只要测试失败,您就可以使用黄瓜钩子截取屏幕截图。当你试图理解失败的测试时,这是一个很大的帮助。

答案 1 :(得分:1)

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

要更直接地回答您的问题,您可以查看Log Parser Plugin。我的直觉告诉我,当测试用例失败时,Jenkins正确地将作业标记为失败(或者更不稳定)。

答案 2 :(得分:0)

为什么你不尝试使用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%")
    }