Listeners trong Selenium Ví dụ về ITestListener & ITestResult

Có hai Listeners chính.

  1. Listeners WebDriver
  2. Listeners  TestNG

Listeners  trong TestNG là gì?

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

Các loại Listeners trong TestNG

Có nhiều loại Listeners cho phép bạn thay đổi hành vi của TestNG.

Dưới đây là một số Listeners  TestNG:

  1. IAnnotationTransformer,
  2. IAnnotationTransformer2,
  3. IConfigurable,
  4. IConfigurationListener,
  5. IExecutionListener,
  6. IHookable,
  7. IInvokedMethodListener,
  8. IInvokedMethodListener2,
  9. IMethodInterceptor,
  10. IReporter,
  11. iSuiteListener,
  12. ITestListener.

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

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

ITestListener có các phương pháp sau

  • OnStart- Phương thức OnStart được gọi khi bất kỳ Thử nghiệm nào bắt đầu.
  • onTestSuccess- onTestSuccess phương pháp được gọi dựa trên sự thành công của bất kỳ Thử nghiệm nào.
  • onTestFailure- onTestFailure phương thức được gọi khi thất bại của bất kỳ Kiểm tra nào.
  • onTestSkipped- onTestSkipped method được gọi khi bỏ qua bất kỳ Test nào.
  • Phương thức onTestFailedButWithinSuccessPercentage- được gọi mỗi khi Kiểm tra không thành công nhưng nằm trong tỷ lệ phần trăm thành công.
  • onFinish- onFinish phương thức đượ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 chạy Firefox và mở trang ” http://demo.guru99.com/V4/”
  1. Đăng nhập vào ứng dụng.

Các bước tạo Listeners TestNG

Đố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 đường viền đỏ và Eclipse sẽ gợi ý cho bạn 2 bản sửa lỗi nhanh như được hiển thị trong màn hình bên dưới:

Chỉ cần nhấp vào “Thêm phương pháp chưa hoàn thành”. Nhiều phương thức chưa hoàn thành (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

    }

}

Hãy sửa đổi lớp ‘ListenerTest’. Đặc biệt, chúng tôi sẽ sửa đổi các phương pháp sau:

nTestFailure, 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à trạng thái đạ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 “TestCases” khác để tự động hóa quy trình đăng nhập. Selenium sẽ thực thi ‘TestCases’ 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, thực hiện trình lắng nghe này trong lớp dự án thông thường của chúng tôi, tức là “TestCases”. 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  (@Listists) như hình dưới đây:

@Listeners(Listener_Demo.ListenerTest.class)

Chúng tôi sử dụng điều này trong lớp “TestCases” như được hiển thị bên dưới.

Vì vậy, cuối cùng lớp “TestCases” trông như thế nào 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ư:

Bước 4): Thực thi lớp “TestCases”. 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à các bản ghi hiển thị trên bảng điều khiển.

Đầu ra của ‘TestCases’ sẽ giống như sau:

[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 xử lý vào mỗi lớp có thể phức tạp 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ẻ Listeners  trong XML.

Listeners này được thực hiện 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, Listeners 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 bất kỳ số lượng lớp Listeners  nào.

Bản tóm tắt:

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

  • Có nhiều loại Listeners và có thể được sử dụng theo yêu cầu.
  • Listeners là giao diện được sử dụng trong tập lệnh trình điều khiển web selen
  • Đã chứng minh việc sử dụng Listener trong Selenium
  • Đã triển khai Listeners cho nhiều lớp
Back to top button