logo图片
TestNG教程

TestNG 监听器

TestNG 监听器

TestNG 提供了 @Listeners 注释,它侦听 selenium 代码中发生的每个事件。侦听器在测试之前或测试用例之后激活。它是一个修改 TestNG 行为的接口。例如,当您通过 selenium 或 appium 运行测试用例时,突然测试用例失败。我们需要一个失败的测试用例的截图,为了实现这样的场景,TestNG 提供了一种机制,即 Listeners。当测试用例失败时,它被重定向到为截图编写的新块。
监听器由ITestListener接口实现。 ITestListener 接口具有以下方法:
TestNG Listeners
onTestStart():只有在任何测试方法启动时才会调用 onTestStart()。
onTestSuccess(): onTestSuccess() 方法在测试方法成功时执行。
onTestFailure(): 当测试方法失败时调用一个 onTestFailure() 方法。
onTestSkipped(): 一个 onTestSkipped()仅在跳过任何测试方法时才运行。
onTestFailedButWithinSuccessPercentage(): 每次测试方法失败但在成功百分比内时都会调用此方法。
onStart(): onStart()方法在任何测试方法开始时执行。
onFinish(): onFinish()是在任何测试用例完成执行时调用。

如何创建 TestNG 侦听器

我们可以创建 Te stNG 监听器有两种方式。首先我们可以在类中使用@Listeners 注释,第二种方法是使用嵌套内
第一种情况: 首先,我们将在类中创建侦听器。
第 1 步: 打开 Eclipse。
第 2 步: 我们创建一个简单的项目。
import org.testng.Assert;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
@Listeners(com.lidihuo.Listener.class)
public class Class1 
{
@Test
public void sum()
{
int sum=0;
int a=5;
int b=7;
sum=a+b;
System.out.println(sum);
}
@Test
public void testtofail()
{
System.out.println("Test case has been failed");
Assert.assertTrue(false);
}
}
    
在上面的代码中,我们创建了两个测试用例,即 sum() 和 testtofail()。
Listener.java
package com.lidihuo;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
public class Listener implements ITestListener 
{
@Override
public void onTestStart(ITestResult result) {
// TOdo Auto-generated method stub
}
@Override
public void onTestSuccess(ITestResult result) {
// TOdo Auto-generated method stub
System.out.println("Success of test cases and its details are : "+result.getName());
}
@Override
public void onTestFailure(ITestResult result) {
// TOdo Auto-generated method stub
System.out.println("Failure of test cases and its details are : "+result.getName());
}
@Override
public void onTestSkipped(ITestResult result) {
// TOdo Auto-generated method stub
System.out.println("Skip of test cases and its details are : "+result.getName());
}
@Override
public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
// TOdo Auto-generated method stub
System.out.println("Failure of test cases and its details are : "+result.getName());
}
@Override
public void onStart(ITestContext context) {
// TOdo Auto-generated method stub
}
@Override
public void onFinish(ITestContext context) {
// TOdo Auto-generated method stub
}
}
    
当 sum() 测试用例通过后,TestNG 调用 onTestSuccess() 侦听器。当 testtofail() 测试用例失败时,TestNG 调用 onTestFailure() 侦听器。
第 3 步: 现在,我们创建 testng。 xml 文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test name="Listeners">
<classes>
<class name="com.lidihuo.Class1"></class>
</classes>
</test>
</suite> <!--Suite-->
    
第 4 步: 运行 testng.xml 文件。右键单击 testng.xml 文件并将光标向下移动到 Run As,然后单击 1 TestNG Suite。
TestNG Listeners
上面的输出表明 sum() 测试用例已经通过,而 testtofail() 测试用例已经失败。
第二种情况: 现在我们使用 testng.xml 文件创建侦听器。
第 1 步: 打开 Eclipse。
第 2 步: 我们将创建两个 Java 项目。一个 Java 项目包含测试用例,另一个项目包含侦听器。
Testcases.java
package com.lidihuo;
import org.testng.Assert;
import org.testng.annotations.Test;
public class Testcases 
{
@Test
public void testtopass()
{
Assert.assertTrue(true);
}
@Test
public void testtofail()
{
Assert.assertFalse(false);
}
}
    
Listener.java
package com.lidihuo;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
public class Listener implements ITestListener 
{
    @Override
    public void onTestStart(ITestResult result) {
        // TOdo Auto-generated method stub
        
    }
    @Override
    public void onTestSuccess(ITestResult result) {
        // TOdo Auto-generated method stub
        System.out.println("Success of test cases and its details are : "+result.getName());
    }
    @Override
    public void onTestFailure(ITestResult result) {
        // TOdo Auto-generated method stub
        System.out.println("Failure of test cases and its details are : "+result.getName());
    }
    @Override
    public void onTestSkipped(ITestResult result) {
        // TOdo Auto-generated method stub
        System.out.println("Skip of test cases and its details are : "+result.getName());
    }
    @Override
    public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
        // TOdo Auto-generated method stub
        System.out.println("Failure of test cases and its details are : "+result.getName());
    }
    @Override
    public void onStart(ITestContext context) {
        // TOdo Auto-generated method stub
        
    }
    @Override
    public void onFinish(ITestContext context) {
        // TOdo Auto-generated method stub
        
    }
}
    
第 3 步: 现在,我们创建 testng.xml 文件。
testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<listeners>
<listener class-name="com.lidihuo.Listener"/>
</listeners>
<test name="Listeners_program">
<classes>
<class name="com.lidihuo.Testcases"></class>
</classes>
</test>
</suite> 
<!--Suite-->
    
第 4 步: 运行 testng.xml 文件。
输出
TestNG Listeners
注意: 当监听器被添加到多个类时,它可能容易出错。如果侦听器是通过 testng.xml 文件实现的,那么它们将应用于所有类。
昵称: 邮箱:
Copyright © 2020 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4