TestNG自定义结果

时间:2012-03-15 00:41:14

标签: java testng

我使用testNG来运行测试自动化框架。目前我运行大型测试套件然后发布套件我在侦听器中迭代结果并将它们添加到我用作测试仪表板的mySQL DB。

IT效果很好,但我现在要做的就是在我的@test失败时截取屏幕截图并将其添加到结果中,这样在我的监听器中我就可以处理它。

这样的事情会很好

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

然后当我在听众的套房末尾处理所有结果时我可以说

如果customeError = true,则将customError写入我的数据库

无论如何要做与此类似的事情

2 个答案:

答案 0 :(得分:1)

我想我已经弄明白了,除非我遗漏了一些似乎有效并且几乎要轻松的东西

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

在我的@test中我可以说断言是否失败

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

我的测试监听器现在有一个if来查找“Name”,如果得到了值并将其放入我的数据库中。

快速测试看起来病得很好,如果它在我真正编码为真正的

时可以正常工作

答案 1 :(得分:0)

ITestResult界面提供了一个setAttribute方法,可让您设置自定义属性 您可以在案例执行时将错误屏幕截图添加到列表中。 在afterInvocation方法中,您可以检查数组的长度,如果它有元素,则可以检查方法结果的setAttribute ...类似于..setAttribute(“ErrorScreenshots”,ErrorScreenshots [])

在自定义报告中,您可以检查属性值并将其添加到数据库中,作为存储屏幕截图的路径,或者如果您愿意,可以将其添加到blob中。