[英]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.