2012-03-15 74 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"); 

我的测试监听器有一个,如果现在要寻找“名称”,如果那里得到的值,并把它放在我的数据库。

快速测试看起来不错生病更新这一点,如果它,当我真正