您在TestNG中的监听器是什么意思?

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