TestNG Người nghe ở Selenium: Ví dụ về ITestListener & ITestResult
Có hai người nghe chính.
- Trình nghe WebDriver
- 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.
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:
- IAnnotationTransformer,
- IAnnotationTransformer2,
- Có thể cấu hình được,
- IConfigurationListener,
- IExecutionListener,
- Tôi có thể móc được,
- IInvokedMethodListener,
- IInvokedMethodListener2 ,
- IMethodInterceptor,
- phóng viên,
- ISuiteListener,
- 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'.
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:
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ư:
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:
[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.
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