TestNG侦听器具有侦听特定事件的能力。它基本上是一个可以更改系统性质的接口。TestNG侦听器用于记录日志和创建报告。
Selenium中有两个侦听器。它们在下面列出-
TestNG侦听器。
WebDriver侦听器。
可以使用侦听器配置TestNG,该侦听器可以更改TestNG的默认行为。TestNG侦听器称为iTestListener(TestNG接口)。一个java类实现iTestListeners,同时覆盖其方法。这些方法中的每一个都会触发一个事件。
下面列出了TestNG侦听器的功能。
iSuiteListener-这由方法onStart()
和组成onFinish()
。当Java类实现此侦听器时,TestNG将分别在TestNG套件的开始和结尾处调用onStart()
和onFinish()
方法。因此,在触发我们的测试套件执行之前onStart()
,TestNG会选择要执行的前提条件测试方法。同样,在执行测试套件之后,onFinish()
TestNG将选择后置条件测试方法。
iTestListener-这在功能上与iSuiteListener类似。唯一的区别是iTestListener适用于Test之前和之后,而不适用于Suite。它有七种方法。
onStart-测试开始时调用此测试方法。
onFinish-所有测试完成执行后,将调用此测试方法。
onTestSuccess-每次测试成功都会调用此测试方法。
onTestFailure-每当测试不成功时,都会调用此测试方法。
onTestSkipped-每次绕过测试都会调用此测试方法。
onTestFailedButWithinSuccessPercentage-每当以successPercentage注释的测试方法不成功时,都会调用此测试方法。但在要求的成功百分比内。
iInvokedMethodListener-这在功能上类似于iTestListener和iSuiteListener。唯一的区别是iInvokedMethodListener适用于每种测试方法之前和之后。它有两种方法。
afterInvocation-在每个测试方法之后调用。
beforeInvocation-在每个测试方法之前调用它。
使用iTestListener。
package nhooo; import org.testng.ITestContext; import org.testng.ITestListener; import org.testng.ITestResult; //实现Testng侦听器的ITestListener接口 public class Listener implements ITestListener { @Override public void onTestStart(ITestResult result) { //TODO自动生成的方法存根 } @Override public void onTestSuccess(ITestResult result) { //TODO自动生成的方法存根 } @Override public void onTestFailure(ITestResult result) { //TODO自动生成的方法存根 //屏幕截图代码 System.out.println ("Failed test case name" + result.getName()); } @Override public void onTestSkipped(ITestResult result) { //TODO自动生成的方法存根 } @Override public void onTestFailedButWithinSuccessPercentage(ITestResult result) { //TODO自动生成的方法存根 } @Override public void onStart(ITestContext context) { //TODO自动生成的方法存根 } @Override public void onFinish(ITestContext context) { //TODO自动生成的方法存根 } }
在Listener java类中,onTestFailure()
将在result.getName()方法的帮助下打印失败的测试方法的名称。
我们可以通过两种方式将此Listener类添加到Java类文件中。
testng xml文件中的侦听器标记。
实现侦听用例类的侦听器。
在testng xml文件中带有Listener标记。
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name = "Nhooo Test"> <listeners> <listener class-name="nhooo.Listener"/> </listeners> <test name = "Test Cycle 1"> <classes> <class name = "TestQA" /> </classes> </test> </suite>
在<listeners>标记内,我们提到了Listener类的路径。
通过对测试类实现TestNG侦听器。
package TestTutorials; import org.testng.annotations.Test; //这段代码将实现TestNG侦听器 @Listeners(nhooo.Listener.class) public class TestCase { @Test public void Login() { System.out.println("Login is successful"); } }