2012-03-15 68 views
1

我使用testNG來運行測試自動化框架。目前,我運行大型測試套件,然後發佈套件,在一個偵聽器中遍歷結果,並將它們添加到我用作測試儀表板的mySQL DB中。TestNG自定義結果

IT工作的很好,但我現在要做的是當我在@test中遇到失敗並將其添加到結果中時截取屏幕截圖,所以在我的偵聽器中我可以處理它。

這樣的事情將是很好

@test 
foo(){ 
    My Test hits an error I take screenshot = shot1 
    ResultMap.add(customError=shot1) 
} 

然後當我處理我的套房在聽者的結束時,所有的結果我只能說

如果customeError =真寫customError到我的DB

反正做任何與此類似

+0

嗨@ducati你怎麼樣能夠運行測試後,遍歷測試套件結果編寫了這一切的作品。你能告訴我你的測試監聽器的實現嗎(只是一個示例代碼)。 TIA! – 2013-10-15 09:22:34

回答

0

有一個方法的setAttribute可與ITestResult接口,它可以讓你設置CUS湯姆屬性。
在執行大小寫的情況下,您可以將錯誤截圖添加到列表中。 在afterInvocation方法中,你可以檢查數組的長度,如果它有元素,那麼setAttribute方法的結果..類似於..setAttribute(「ErrorScreenshots」,ErrorScreenshots [])

在你的自定義報告,你可以檢查屬性值,並將其添加到數據庫作爲可能的路徑屏幕截圖的存儲或作爲斑點,如果你想..

+0

所以我現在看到如何添加到上下文,但即時通訊添加到testResult。基本上,如果斷言失敗,我想要添加一個新的參數或屬性到當前的測試對象與我的失敗截圖。我還沒有找到辦法做到這一點 – ducati1212 2012-03-15 13:43:44

1

我想我想通了,除非我錯過了這似乎工作,幾乎很容易

ITestResult result = Reporter.getCurrentTestResult(); 
result.setAttribute("Name", "put my screenshot here"); 

在我的@test我可以說,如果斷言失敗

ITestResult result = Reporter.getCurrentTestResult(); 
result.setAttribute("Name", "put my screenshot here"); 

我的測試監聽器有一個,如果現在要尋找「名稱」,如果那裏得到的值,並把它放在我的數據庫。

快速測試看起來不錯生病更新這一點,如果它,當我真正