TestNG ผู้ฟังใน Selenium: ITestListener & ตัวอย่าง ITestResult
มีผู้ฟังหลักสองคน
- ผู้ฟัง WebDriver
- TestNG ฟัง
ในบทช่วยสอนนี้ เราจะหารือเกี่ยวกับ ทดสอบ ผู้ฟัง.
ผู้ฟังอยู่ในอะไร TestNG?
Listener ถูกกำหนดให้เป็นอินเทอร์เฟซที่ปรับเปลี่ยนค่าเริ่มต้น TestNGพฤติกรรมของ ' ตามชื่อที่แนะนำ ผู้ฟังจะ "ฟัง" เหตุการณ์ที่กำหนดไว้ในสคริปต์ selenium และประพฤติตามนั้น ใช้ใน selenium โดยการนำ Listeners Interface มาใช้ อนุญาตให้ปรับแต่งได้ TestNG รายงานหรือบันทึก มีหลายประเภท TestNG ผู้ฟังได้.
ประเภทของผู้ฟังใน TestNG
มี Listener หลายประเภทที่ให้คุณเปลี่ยนรูปแบบได้ TestNGพฤติกรรมของ
ด้านล่างนี้คือบางส่วน TestNG ผู้ฟัง:
- หม้อแปลงไฟฟ้าหมายเหตุประกอบ ,
- IAAnnotationTransformer2 ,
- ฉันกำหนดค่าได้ ,
- IConfigurationListener,
- IExecutionListener,
- ฉันติดได้ ,
- IInvolvedMethodListener ,
- IInvolvedMethodListener2 ,
- IMethodInterceptor ,
- ไอรีพอร์ตเตอร์,
- ไอสวีทลิฟเทนเนอร์,
- ITestListener.
อินเทอร์เฟซข้างต้นเรียกว่า TestNG ผู้ฟัง อินเทอร์เฟซเหล่านี้ใช้ในเซเลเนียมเพื่อสร้างบันทึกหรือปรับแต่ง TestNG รายงาน
ในบทช่วยสอนนี้ เราจะใช้งาน ITestListener
ITestListener มีวิธีการดังต่อไปนี้
- OnStart- วิธีการ OnStart จะถูกเรียกเมื่อการทดสอบใด ๆ เริ่มต้นขึ้น
- onTestSuccess- วิธี onTestSuccess ถูกเรียกใช้เมื่อความสำเร็จของการทดสอบใด ๆ
- onTestFailure- เมธอด onTestFailure ถูกเรียกใช้เมื่อการทดสอบล้มเหลว
- onTestSkipped- เมธอด onTestSkipped ถูกเรียกใช้เมื่อข้ามการทดสอบใดๆ
- onTestFailedแต่ภายในSuccessPercentage- มีการเรียกเมธอดแต่ละครั้งที่การทดสอบล้มเหลว แต่อยู่ในเปอร์เซ็นต์ความสำเร็จ
- เมื่อเสร็จสิ้น- เมธอด onFinish จะถูกเรียกหลังจากดำเนินการทดสอบทั้งหมดแล้ว
สถานการณ์ทดสอบ
ในสถานการณ์การทดสอบนี้ เราจะทำให้กระบวนการเข้าสู่ระบบเป็นแบบอัตโนมัติและใช้งาน 'ItestListener'
- เปิด Firefox และเปิดเว็บไซต์ https://demo.guru99.com/V4/
- เข้าสู่ระบบแอปพลิเคชัน
ขั้นตอนการสร้างก TestNG ผู้ฟัง
สำหรับสถานการณ์การทดสอบข้างต้น เราจะใช้ Listener
ขั้นตอน 1) สร้างคลาส “ListenerTest” ที่ใช้ 'ITestListener' เลื่อนเมาส์ไปที่ข้อความเส้นสีแดงและ Eclipse จะแนะนำการแก้ไขด่วน 2 วิธีดังที่แสดงในหน้าจอด้านล่าง:
เพียงคลิกที่ "เพิ่มวิธีการที่ไม่ได้ใช้งาน" มีการเพิ่มวิธีการที่ยังไม่ได้ใช้งานหลายวิธี (ไม่มีเนื้อความ) ลงในโค้ด ตรวจสอบด้านล่าง-
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 } }
มาแก้ไขคลาส 'ListenerTest' กัน โดยเฉพาะอย่างยิ่งเราจะแก้ไขวิธีการดังต่อไปนี้
onTestFailure, onTestSkipped, onTestStart, onTestSuccess, etc.
การปรับเปลี่ยนทำได้ง่าย เราเพียงพิมพ์ชื่อของการทดสอบ
บันทึกจะถูกสร้างขึ้นในคอนโซล ผู้ใช้จะเข้าใจได้ง่ายว่าการทดสอบใดเป็นสถานะผ่าน ไม่ผ่าน และข้าม
หลังจากแก้ไขโค้ดจะมีลักษณะดังนี้-
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()); } }
ขั้นตอน 2) สร้างคลาส “TestCases” อีกคลาสหนึ่งสำหรับกระบวนการเข้าสู่ระบบอัตโนมัติ Selenium จะดำเนินการ 'TestCases' นี้เพื่อเข้าสู่ระบบโดยอัตโนมัติ
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("https://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); } }
ขั้นตอน 3) จากนั้น นำ Listener นี้ไปใช้ในคลาสโปรเจ็กต์ปกติของเรา เช่น “TestCases” มีสองวิธีในการเชื่อมต่อกับคลาสและอินเทอร์เฟซที่แตกต่างกัน
วิธีแรกคือการใช้คำอธิบายประกอบ Listeners (@Listeners) ดังที่แสดงด้านล่าง:
@Listeners(Listener_Demo.ListenerTest.class)
เราใช้สิ่งนี้ในคลาส “TestCases” ดังที่แสดงด้านล่าง
ในที่สุดคลาส ” TestCases ” จะดูเหมือนหลังจากใช้ Listener annotation:
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("https://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); } }
โครงสร้างโครงการมีลักษณะดังนี้:
ขั้นตอนที่ 4): ดำเนินการคลาส “TestCases ” เมธอดในคลาส “ListenerTest” จะถูกเรียกโดยอัตโนมัติตามพฤติกรรมของเมธอดที่มีคำอธิบายประกอบเป็น @Test
ขั้นตอนที่ 5): ตรวจสอบผลลัพธ์ที่บันทึกแสดงที่คอนโซล
ผลลัพธ์ของ 'TestCases' จะมีลักษณะดังนี้:
[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]
การใช้ Listener สำหรับหลายคลาส
หากโปรเจ็กต์มีหลายคลาส การเพิ่ม Listeners ในแต่ละคลาสอาจเป็นเรื่องยุ่งยากและเกิดข้อผิดพลาดได้ง่าย
ในกรณีเช่นนี้ เราสามารถสร้าง testng.xml และเพิ่มแท็ก listeners ใน XML ได้
Listener นี้จะถูกนำไปใช้ทั่วทั้งชุดการทดสอบ ไม่ว่าคุณจะมีคลาสจำนวนเท่าใด เมื่อคุณเรียกใช้ไฟล์ XML นี้ Listener จะทำงานในทุกคลาสที่กล่าวถึง คุณยังสามารถประกาศคลาส Listener จำนวนเท่าใดก็ได้
สรุป
ผู้ฟังจะต้องสร้างบันทึกหรือปรับแต่ง TestNG รายงานใน Selenium เว็บไดรเวอร์
- Listener มีหลายประเภทและสามารถใช้ได้ตามความต้องการ
- Listeners คืออินเทอร์เฟซที่ใช้ในสคริปต์ไดรเวอร์เว็บของ Selenium
- สาธิตการใช้ Listener ใน Selenium
- ใช้งาน Listeners สำหรับหลายคลาส