TestNG是否支持除PASS / FAIL之外的WARN类型错误?

时间:2011-11-15 11:20:12

标签: testng

我正在使用TestNG与Selenium一起测试一个Web应用程序,该应用程序具有多页面流程(例如注册,并在8个不同的页面上完成您的个人资料)。

我使用了Selenium的PageObject方法,并在检查例如每个页面的每个页面中实现了检查代码。 “php error”消息未显示在页面中,在这种情况下,如果单个页面检测到此错误,则完整流程(这是一个在内部引用多个PageObjects的@Test方法)将失败。

我想报告一些错误,但没有将整个流程标记为失败(例如错误地转义引号或HTML字符)。我可能在所有页面中都有一个共同的错误,它不会妨碍整个流程的执行,如果我能够报告警告并且仍然能够继续测试,它可以节省时间。

Reporter是最好的方法吗?从可用性的角度来看,用RED(失败),GREEN(通过)和ORANGE(警告)颜色显示报告会很不错。

2 个答案:

答案 0 :(得分:3)

我想出了一种方法来做到这一点,虽然这有点像黑客。在您想要警告而不是通过失败的测试方法中,执行以下操作:

...
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");

查看是否有警告而不是通行证。

答案 1 :(得分:0)

除了进入源代码并自己进行更改之外,没有简单的方法来修改报告者(如果你想要沿着那条路走下去,我很乐意让代码更易于修改,例如制作它容易子类等...或者写你自己的记者(我明白你为什么要避免这种情况)。

你考虑过使用Reporter.log()吗?这些字符串将出现在特殊部分的最终报告中。

另请注意,TestNG正在新版本中获取新报告:

http://beust.com/weblog/2012/01/01/ushering-testng-into-the-new-year/