【发布时间】:2011-12-09 20:40:32
【问题描述】:
在我的实习中,我必须使用 TestNG 和 selenium 来测试 Web 应用程序。但是我有一个问题,有时硒或浏览器由于某种随机原因无法正常工作,因此工作测试被标记为“失败”。为了避免这种情况,我可以使用注解@Test(invocationCount = 4, successPercentage = 25),然后如果测试成功一次,则测试标记为“成功”,这很好,但问题是这个解决方案将测试时间乘以4,这不是非常有效。
我可以做的是减少测试时间,是写一些规则“如果测试失败,重新运行这个测试(只有当测试失败时),如果它在第二个,第三个或第四个工作时间,然后将此测试标记为“成功”“这样我就可以避免这些随机错误。但是我还没有找到如何写这个规则,我看到我们可以添加一个监听器,所以我们有一个名为“onTestFailure”的方法,所以我可以在测试失败但我不知道如何做的时候做点什么重新运行测试。
我还找到了 testng-failed.xml 保存了所有失败的测试,所以我们可以运行这个 xml 文件来重新运行这些测试,但这会删除之前第一次运行的报告,但我只想要失败的如果第二次运行成功,测试将被标记为“成功”。 (我已经将 testNG/selenium 集成到 Jenkins,所以我有一个包含所有测试的图表,所以这种方法不是很适应,但是这种方法不会将测试时间乘以 4,这就是我想要的)
因此,如果您有任何线索可以做到这一点,那将是非常好的。
【问题讨论】:
-
我已经测试了运行 testng-failed.xml 3 次,然后所有的测试都在工作,并且不需要很多时间。但是对于 Jenkins,当最后一次运行 testng-failed.xml 时,这将编辑 testng-result.xml,所以现在图表显示“1 次测试运行,1 次成功”,因为最后一次运行,testng 只启动了这个测试第一次失败了 3 次。此方法将生成一个包含所有失败测试的图表,但不会指示所有工作测试(第三次运行的测试除外),这不是我想要的……有什么线索吗?
标签: java testing selenium jenkins testng