TestNG ผู้ฟังใน Selenium: ITestListener & ตัวอย่าง ITestResult


มีผู้ฟังหลักสองคน

  1. ผู้ฟัง WebDriver
  2. TestNG ฟัง

ในบทช่วยสอนนี้ เราจะหารือเกี่ยวกับ ทดสอบ ผู้ฟัง.

ผู้ฟังอยู่ในอะไร TestNG?

Listener ถูกกำหนดให้เป็นอินเทอร์เฟซที่ปรับเปลี่ยนค่าเริ่มต้น TestNGพฤติกรรมของ ' ตามชื่อที่แนะนำ ผู้ฟังจะ "ฟัง" เหตุการณ์ที่กำหนดไว้ในสคริปต์ selenium และประพฤติตามนั้น ใช้ใน selenium โดยการนำ Listeners Interface มาใช้ อนุญาตให้ปรับแต่งได้ TestNG รายงานหรือบันทึก มีหลายประเภท TestNG ผู้ฟังได้.

ผู้ฟังใน TestNG

ประเภทของผู้ฟังใน TestNG

มี Listener หลายประเภทที่ให้คุณเปลี่ยนรูปแบบได้ TestNGพฤติกรรมของ

ด้านล่างนี้คือบางส่วน TestNG ผู้ฟัง:

  1. หม้อแปลงไฟฟ้าหมายเหตุประกอบ ,
  2. IAAnnotationTransformer2 ,
  3. ฉันกำหนดค่าได้ ,
  4. IConfigurationListener,
  5. IExecutionListener,
  6. ฉันติดได้ ,
  7. IInvolvedMethodListener ,
  8. IInvolvedMethodListener2 ,
  9. IMethodInterceptor ,
  10. ไอรีพอร์ตเตอร์,
  11. ไอสวีทลิฟเทนเนอร์,
  12. ITestListener.

อินเทอร์เฟซข้างต้นเรียกว่า TestNG ผู้ฟัง อินเทอร์เฟซเหล่านี้ใช้ในเซเลเนียมเพื่อสร้างบันทึกหรือปรับแต่ง TestNG รายงาน

ในบทช่วยสอนนี้ เราจะใช้งาน ITestListener

ITestListener มีวิธีการดังต่อไปนี้

  • OnStart- วิธีการ OnStart จะถูกเรียกเมื่อการทดสอบใด ๆ เริ่มต้นขึ้น
  • onTestSuccess- วิธี onTestSuccess ถูกเรียกใช้เมื่อความสำเร็จของการทดสอบใด ๆ
  • onTestFailure- เมธอด onTestFailure ถูกเรียกใช้เมื่อการทดสอบล้มเหลว
  • onTestSkipped- เมธอด onTestSkipped ถูกเรียกใช้เมื่อข้ามการทดสอบใดๆ
  • onTestFailedแต่ภายในSuccessPercentage- มีการเรียกเมธอดแต่ละครั้งที่การทดสอบล้มเหลว แต่อยู่ในเปอร์เซ็นต์ความสำเร็จ
  • เมื่อเสร็จสิ้น- เมธอด onFinish จะถูกเรียกหลังจากดำเนินการทดสอบทั้งหมดแล้ว

สถานการณ์ทดสอบ

ในสถานการณ์การทดสอบนี้ เราจะทำให้กระบวนการเข้าสู่ระบบเป็นแบบอัตโนมัติและใช้งาน 'ItestListener'

  1. เปิด Firefox และเปิดเว็บไซต์ https://demo.guru99.com/V4/
  2. สถานการณ์ทดสอบ

  3. เข้าสู่ระบบแอปพลิเคชัน
  4. สถานการณ์ทดสอบ

ขั้นตอนการสร้างก TestNG ผู้ฟัง

สำหรับสถานการณ์การทดสอบข้างต้น เราจะใช้ Listener

ขั้นตอน 1) สร้างคลาส “ListenerTest” ที่ใช้ 'ITestListener' เลื่อนเมาส์ไปที่ข้อความเส้นสีแดงและ Eclipse จะแนะนำการแก้ไขด่วน 2 วิธีดังที่แสดงในหน้าจอด้านล่าง:

ขั้นตอนในการสร้าง TestNG ผู้ฟัง

เพียงคลิกที่ "เพิ่มวิธีการที่ไม่ได้ใช้งาน" มีการเพิ่มวิธีการที่ยังไม่ได้ใช้งานหลายวิธี (ไม่มีเนื้อความ) ลงในโค้ด ตรวจสอบด้านล่าง-

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);			
}		
}			

โครงสร้างโครงการมีลักษณะดังนี้:

ขั้นตอนในการสร้าง TestNG ผู้ฟัง

ขั้นตอนที่ 4): ดำเนินการคลาส “TestCases ” เมธอดในคลาส “ListenerTest” จะถูกเรียกโดยอัตโนมัติตามพฤติกรรมของเมธอดที่มีคำอธิบายประกอบเป็น @Test

ขั้นตอนที่ 5): ตรวจสอบผลลัพธ์ที่บันทึกแสดงที่คอนโซล

ผลลัพธ์ของ 'TestCases' จะมีลักษณะดังนี้:

ขั้นตอนในการสร้าง TestNG ผู้ฟัง

[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 สำหรับหลายคลาส

Listener นี้จะถูกนำไปใช้ทั่วทั้งชุดการทดสอบ ไม่ว่าคุณจะมีคลาสจำนวนเท่าใด เมื่อคุณเรียกใช้ไฟล์ XML นี้ Listener จะทำงานในทุกคลาสที่กล่าวถึง คุณยังสามารถประกาศคลาส Listener จำนวนเท่าใดก็ได้

สรุป

ผู้ฟังจะต้องสร้างบันทึกหรือปรับแต่ง TestNG รายงานใน Selenium เว็บไดรเวอร์

  • Listener มีหลายประเภทและสามารถใช้ได้ตามความต้องการ
  • Listeners คืออินเทอร์เฟซที่ใช้ในสคริปต์ไดรเวอร์เว็บของ Selenium
  • สาธิตการใช้ Listener ใน Selenium
  • ใช้งาน Listeners สำหรับหลายคลาส