TestNG Người nghe ở Selenium: Ví dụ về ITestListener & ITestResult


Có hai người nghe chính.

  1. Trình nghe WebDriver
  2. TestNG Người nghe

Trong hướng dẫn này, chúng ta sẽ thảo luận về Kiểm tra Người nghe.

Người nghe là gì TestNG?

Trình nghe được định nghĩa là giao diện sửa đổi mặc định TestNGhành vi của. Như tên gọi, Listeners “lắng nghe” sự kiện được định nghĩa trong tập lệnh selenium và hành động theo đó. Nó được sử dụng trong selenium bằng cách triển khai Giao diện Listeners. Nó cho phép tùy chỉnh TestNG báo cáo hoặc nhật ký. Có rất nhiều loại TestNG người nghe có sẵn.

Người nghe ở TestNG

Các loại người nghe trong TestNG

Có nhiều loại trình nghe cho phép bạn thay đổi TestNGhành vi của.

Dưới đây là một số ít TestNG người nghe:

  1. IAnnotationTransformer,
  2. IAnnotationTransformer2,
  3. Có thể cấu hình được,
  4. IConfigurationListener,
  5. IExecutionListener,
  6. Tôi có thể móc được,
  7. IInvokedMethodListener,
  8. IInvokedMethodListener2 ,
  9. IMethodInterceptor,
  10. phóng viên,
  11. ISuiteListener,
  12. ITestListener .

Giao diện trên được gọi là TestNG Người nghe. Các giao diện này được sử dụng trong selenium để tạo nhật ký hoặc tùy chỉnh TestNG báo cáo.

Trong hướng dẫn này, chúng tôi sẽ triển khai ITestListener.

ITestListener có các phương thức sau

  • Băt đâu- Phương thức OnStart được gọi khi bất kỳ Thử nghiệm nào bắt đầu.
  • onTestSuccess- Phương thức onTestSuccess được gọi là thành công của bất kỳ Thử nghiệm nào.
  • onTestFailure- Phương thức onTestFailure được gọi khi bất kỳ Thử nghiệm nào không thành công.
  • onTestSkipped- Phương thức onTestSkipped được gọi khi bỏ qua bất kỳ Bài kiểm tra nào.
  • onTestFailedButInSuccessPercentage- phương thức được gọi mỗi lần Kiểm tra thất bại nhưng nằm trong tỷ lệ phần trăm thành công.
  • onFinish- Phương thức onFinish được gọi sau khi tất cả các Kiểm tra được thực thi.

Kịch bản thử nghiệm

Trong kịch bản thử nghiệm này, chúng tôi sẽ tự động hóa quy trình Đăng nhập và triển khai 'ItestListener'.

  1. Khởi động Firefox và mở trang web http://demo.guru99.com/V4/
  2. Kịch bản thử nghiệm

  3. Đăng nhập vào ứng dụng.
  4. Kịch bản thử nghiệm

Các bước để tạo một TestNG Người nghe

Đối với kịch bản thử nghiệm ở trên, chúng tôi sẽ triển khai Listener.

Bước 1) Tạo lớp “ListenerTest” triển khai 'ITestListener'. Di chuyển chuột qua văn bản có đường viền đỏ và Eclipse sẽ gợi ý cho bạn 2 cách khắc phục nhanh như trong màn hình bên dưới:

Các bước để tạo một TestNG Người nghe

Chỉ cần nhấp vào “Thêm các phương pháp chưa được thực hiện”. Nhiều phương thức chưa được triển khai (không có nội dung) được thêm vào mã. Kiểm tra bên dưới-

package Listener_Demo;		

import org.testng.ITestContext ;		
import org.testng.ITestListener ;		
import org.testng.ITestResult ;		

public class ListenerTest implements ITestListener						
{		

    @Override		
    public void onFinish(ITestContext arg0) {					
        // TODO Auto-generated method stub				
        		
    }		

    @Override		
    public void onStart(ITestContext arg0) {					
        // TODO Auto-generated method stub				
        		
    }		

    @Override		
    public void onTestFailedButWithinSuccessPercentage(ITestResult arg0) {					
        // TODO Auto-generated method stub				
        		
    }		

    @Override		
    public void onTestFailure(ITestResult arg0) {					
        // TODO Auto-generated method stub				
        		
    }		

    @Override		
    public void onTestSkipped(ITestResult arg0) {					
        // TODO Auto-generated method stub				
        		
    }		

    @Override		
    public void onTestStart(ITestResult arg0) {					
        // TODO Auto-generated method stub				
        		
    }		

    @Override		
    public void onTestSuccess(ITestResult arg0) {					
        // TODO Auto-generated method stub				
        		
    }		
}		

Chúng ta hãy sửa đổi lớp 'ListenerTest'. Cụ thể, chúng ta sẽ sửa đổi các phương pháp sau:

onTestFailure, onTestSkipped, onTestStart, onTestSuccess, etc.

Việc sửa đổi rất đơn giản. Chúng tôi chỉ in tên của Bài kiểm tra.

Nhật ký được tạo trong bảng điều khiển. Người dùng có thể dễ dàng hiểu bài kiểm tra nào là đạt, không đạt và bỏ qua.

Sau khi sửa đổi, mã trông giống như-

package Listener_Demo;		

import org.testng.ITestContext;		
import org.testng.ITestListener;		
import org.testng.ITestResult;		

public class ListenerTest implements ITestListener						
{		

    @Override		
    public void onFinish(ITestContext Result) 					
    {		
                		
    }		

    @Override		
    public void onStart(ITestContext Result)					
    {		
            		
    }		

    @Override		
    public void onTestFailedButWithinSuccessPercentage(ITestResult Result)					
    {		
    		
    }		

    // When Test case get failed, this method is called.		
    @Override		
    public void onTestFailure(ITestResult Result) 					
    {		
    System.out.println("The name of the testcase failed is :"+Result.getName());					
    }		

    // When Test case get Skipped, this method is called.		
    @Override		
    public void onTestSkipped(ITestResult Result)					
    {		
    System.out.println("The name of the testcase Skipped is :"+Result.getName());					
    }		

    // When Test case get Started, this method is called.		
    @Override		
    public void onTestStart(ITestResult Result)					
    {		
    System.out.println(Result.getName()+" test case started");					
    }		

    // When Test case get passed, this method is called.		
    @Override		
    public void onTestSuccess(ITestResult Result)					
    {		
    System.out.println("The name of the testcase passed is :"+Result.getName());					
    }		

}			

Bước 2) Tạo một lớp “TestCase” khác để tự động hóa quá trình đăng nhập. Selenium sẽ thực thi 'TestCase' này để đăng nhập tự động.

package Listener_Demo;		

import org.openqa.selenium.By;		
import org.openqa.selenium.WebDriver;		
import org.openqa.selenium.firefox.FirefoxDriver;		
import org.testng.Assert;		
import org.testng.annotations.Listeners;		
Import org.testng.annotations.Test;		

public class TestCases {				
WebDriver driver= new FirefoxDriver();					

// Test to pass as to verify listeners .		
@Test		
public void Login()				
{		
    driver.get("http://demo.guru99.com/V4/");					
    driver.findElement(By.name("uid")).sendKeys("mngr34926");							
    driver.findElement(By.name("password")).sendKeys("amUpenu");							
    driver.findElement(By.name("btnLogin")).click();					
}		

// Forcefully failed this test as to verify listener.		
@Test		
public void TestToFail()				
{		
    System.out.println("This method to test fail");					
    Assert.assertTrue(false);			
}		
}

Bước 3) Tiếp theo, triển khai trình nghe này trong lớp dự án thông thường của chúng tôi, tức là “TestCase”. Có hai cách khác nhau để kết nối với lớp và giao diện.

Cách đầu tiên là sử dụng chú thích Listeners (@Listeners) như dưới đây:

@Listeners(Listener_Demo.ListenerTest.class)

Chúng tôi sử dụng điều này trong lớp “TestCase” như dưới đây.

Vì vậy, cuối cùng lớp ” TestCases ” trông giống như sau khi sử dụng chú thích Listener:

package Listener_Demo;		

import org.openqa.selenium.By;		
import org.openqa.selenium.WebDriver;		
import org.openqa.selenium.firefox.FirefoxDriver;		
import org.testng.Assert;		
import org.testng.annotations.Listeners;		
import org.testng.annotations.Test;             		

@Listeners(Listener_Demo.ListenerTest.class)			

public class TestCases {				
WebDriver driver= new FirefoxDriver();					

//Test to pass as to verify listeners.		
@Test		
public void Login()				
{		
    driver.get("http://demo.guru99.com/V4/");					
    driver.findElement(By.name("uid")).sendKeys("mngr34926");							
    driver.findElement(By.name("password")).sendKeys("amUpenu");							
    driver.findElement(By.id("")).click();					
}		

//Forcefully failed this test as verify listener.		
@Test		
public void TestToFail()				
{		
    System.out.println("This method to test fail");					
    Assert.assertTrue(false);			
}		
}			

Cấu trúc dự án trông giống như:

Các bước để tạo một TestNG Người nghe

Bước 4): Thực thi lớp “TestCase”. Các phương thức trong lớp “ListenerTest” được gọi tự động theo hành vi của các phương thức được chú thích là @Test.

Bước 5): Xác minh đầu ra mà nhật ký hiển thị trên bảng điều khiển.

Đầu ra của 'TestCase' sẽ trông như thế này:

Các bước để tạo một TestNG Người nghe

[TestNG] Running:		
C:\Users\gauravn\AppData\Local\Temp\testng-eclipse--1058076918\testng-customsuite.xml		

Login Test Case started		
The name of the testcase passed is:Login		
TestToFail test case started		
This method to test fail		
The name of the testcase failed is:TestToFail		
PASSED: Login		
FAILED: TestToFail		
java.lang.AssertionError: expected [true] but found [false]

Sử dụng Listener cho nhiều lớp.

Nếu dự án có nhiều lớp, việc thêm Trình nghe vào từng lớp có thể rất cồng kềnh và dễ xảy ra lỗi.

Trong những trường hợp như vậy, chúng ta có thể tạo testng.xml và thêm thẻ trình nghe trong XML.

Sử dụng Listener cho nhiều lớp

Trình nghe này được triển khai trong toàn bộ bộ thử nghiệm bất kể số lượng lớp bạn có. Khi bạn chạy tệp XML này, trình nghe sẽ hoạt động trên tất cả các lớp được đề cập. Bạn cũng có thể khai báo số lượng lớp người nghe bất kỳ.

Tổng kết

Người nghe được yêu cầu tạo nhật ký hoặc tùy chỉnh TestNG báo cáo trong Selenium Webdriver.

  • Có nhiều loại trình nghe và có thể được sử dụng theo yêu cầu.
  • Trình nghe là các giao diện được sử dụng trong tập lệnh trình điều khiển web Selenium
  • Trình bày cách sử dụng Listener trong Selenium
  • Đã triển khai Trình nghe cho nhiều lớp