簡體   English   中英

黃瓜-在詹金斯重新運行失敗的測試

[英]Cucumber - rerun failed tests in Jenkins

我們正在通過jenkins服務器運行一組Frank /黃瓜測試,以測試iOS應用。

這些測試可以在本地運行,也可以在jenkins服務器上手動運行時運行。 但是,通過jenkins時,偶爾會出現錯誤,導致構建失敗,然后再次運行jenkins(即,按“立即構建”按鈕),而無需進行任何更改即可正常運行。

我們運行以下代碼來運行測試:

cucumber features/ipad --tags ~@ignore

然后,我添加了rerun參數,以將失敗的測試轉儲到文本文件中:

-f rerun -o rerun.txt

然后直接運行黃瓜rerun.txt,所以整個命令如下:

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

這可以正常工作,它可以捕獲失敗的測試,然后在其他測試之后再次運行它們。

但是 ,即使重新運行通過了,jenkins仍將構建標記為失敗。

有沒有辦法告訴黃瓜或詹金斯忽略第一次測試運行,而只將重新運行測試標記為通過或失敗?

還是有一個更整潔的方法?

謝謝

jenkins腳本非常簡單。 當腳本失敗(即退出代碼非零)時,構建將失敗。

另外,如果您正在使用junit插件發布結果,請確保在結果中發現測試失敗時,插件不會使構建失敗。

但是,嘗試找到測試失敗的原因。 始終獲取測試運行的應用程序日志,並檢查在那里發生的情況。 如果自動測試不可靠,請使用手動測試。

此外,每當測試失敗時,您都可以使用黃瓜鈎子來截屏。 當您嘗試了解失敗的測試時,這是一個很大的幫助。

抱歉,如果我一無所知或者只是不了解黃瓜的哲學,但是測試失敗通常是有原因的。 通常,找出測試失敗的原因,然后解決該問題(或測試)。

為了更直接地回答您的問題,您可以登錄Log Parser插件 我的直覺告訴我,當一個測試用例失敗時,詹金斯正確地將作業標記為失敗(或者最好是不穩定)。

為什么不嘗試使用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%")
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM