2011-11-15 41 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"); 

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

相关问题