我正在使用TestNG与Selenium一起测试一个Web应用程序,该应用程序具有多页面流程(例如注册,并在8个不同的页面上完成您的个人资料)。
我使用了Selenium的PageObject方法,并在检查例如每个页面的每个页面中实现了检查代码。 “php error”消息未显示在页面中,在这种情况下,如果单个页面检测到此错误,则完整流程(这是一个在内部引用多个PageObjects的@Test方法)将失败。
我想报告一些错误,但没有将整个流程标记为失败(例如错误地转义引号或HTML字符)。我可能在所有页面中都有一个共同的错误,它不会妨碍整个流程的执行,如果我能够报告警告并且仍然能够继续测试,它可以节省时间。
Reporter是最好的方法吗?从可用性的角度来看,用RED(失败),GREEN(通过)和ORANGE(警告)颜色显示报告会很不错。
答案 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/