2011-11-15 55 views
4

我將TestNG與Selenium結合使用來測試具有多頁面流(例如註冊並跨8個不同頁面完成您的配置文件)的Web應用程序。TestNG是否支持WARN類型錯誤而不僅僅是PASS/FAIL?

我已經使用Selenium的PageObject的方法,並在每個頁面中執行檢查代碼以檢查「php error」消息不會顯示在頁面中,在這種情況下,如果單個頁面檢測到此錯誤,則完整流(這是一個@Test方法在內部引用多個PageObjects)將失敗。

我想報告一些錯誤,但不會將整個流程標記爲失敗(例如錯誤地轉義引號或HTML字符)。我可能在所有頁面中都有一個共同的錯誤,這並不妨礙整個流程的執行,如果我能報告警告並能夠繼續測試,這將節省時間。

Reporter做到這一點的最好方法?從可用性角度來看,使用RED(失敗),GREEN(通過)和ORANGE(警告)顏色顯示報告會很好。

+0

我很想知道這是否也很容易完成,或者有什麼可以開箱即可完成的。 – Aaron

回答

0

沒有簡單的方法來修改記者,除非進入源代碼並自己進行更改(並且我打算讓代碼更容易修改,如果您想要沿着這條路線進行修改,例如製作很容易繼承,等等......)或者通過寫自己的記者(我明白你爲什麼要避免這樣做)。

你有沒有考慮過使用Reporter.log()?這些字符串將顯示在特殊部分的最終報告中。

另外,請注意TestNG的是在新版本中得到新的報告:

http://beust.com/weblog/2012/01/01/ushering-testng-into-the-new-year/

+0

我非常感興趣。 Reporter.log()是可以的,但結果只是列出了通行證並失敗,沒有警告。我想要n次傳球,n次失敗,n次警告。我想做任何一種任意的警告級別,「中等」,「嚴重」等。 – Aaron

2

我想出了一個辦法做到這一點,雖然這是一個黑客攻擊的一位。在你想警告,而不是傳球失敗的測試方法,這樣做:

... 
import org.testng.Reporter; 
... 

@Test 
public void myTestMethod(){ 
    if(someConditionThatCausesWarning) { 
     Reporter.getCurrentTestResult().setAttribute("warn", "My warning message"); 
    } 
} 

這臺測試結果對象的屬性,它可以然後在您的自定義偵聽和記者的訪問。我將詳細程度設置爲0:

... 
TestNG tng = new TestNG(); 
tng.setVerbose(0); 
... 

它關閉默認的實時報告。

然後在聽衆和/或報告你:

testResult.getAttribute("warn"); 

,看看是否有一個警告,而不是一通。

相關問題