TestNG 청취자 Selenium


두 명의 주요 청취자가 있습니다.

  1. WebDriver 리스너
  2. TestNG 청취자

이 튜토리얼에서는 다음에 대해 논의할 것입니다. 테스트 중 청취자.

청취자는 무엇입니까? TestNG?

리스너는 기본값을 수정하는 인터페이스로 정의됩니다. TestNG'의 동작입니다. 이름에서 알 수 있듯이 리스너는 셀레늄 스크립트에 정의된 이벤트를 "수신"하고 그에 따라 동작합니다. 리스너 인터페이스를 구현하여 셀레늄에서 사용됩니다. 사용자 정의를 허용합니다. TestNG 보고서 또는 로그. 많은 유형이 있습니다 TestNG 청취자 가능.

청취자 TestNG

청취자의 유형 TestNG

리스너에는 다양한 유형이 있으며 이를 변경할 수 있습니다. TestNG의 행동.

아래는 몇 가지 TestNG 청취자:

  1. IAnnotationTransformer,
  2. IAnnotationTransformer2,
  3. 구성 가능,
  4. IConfigurationListener,
  5. IExecutionListener,
  6. IHookable ,
  7. IInvokedMethodListener ,
  8. IInvokedMethodListener2 ,
  9. IMethod인터셉터
  10. 아이리포터,
  11. I SuiteListener,
  12. ITestListener .

위의 인터페이스가 호출됩니다. TestNG 리스너. 이러한 인터페이스는 Selenium에서 로그를 생성하거나 사용자 정의하는 데 사용됩니다. TestNG 보고합니다.

이 튜토리얼에서는 ITestListener를 구현합니다.

ITestListener에는 다음과 같은 메서드가 있습니다.

  • 온스타트- OnStart 메서드는 테스트가 시작될 때 호출됩니다.
  • onTestSuccess- onTestSuccess 메소드는 테스트 성공 시 호출됩니다.
  • onTestFailure- onTestFailure 메소드는 테스트 실패 시 호출됩니다.
  • onTestSipped- onTestSkipped 메소드는 테스트를 건너뛸 때 호출됩니다.
  • onTestFailedButInSuccessPercentage- 메서드는 테스트가 실패할 때마다 호출되지만 성공률 내에 있습니다.
  • onFinish- onFinish 메소드는 모든 테스트가 실행된 후에 호출됩니다.

테스트 시나리오

이 테스트 시나리오에서는 로그인 프로세스를 자동화하고 'ItestListener'를 구현합니다.

  1. 를 실행 Firefox 그리고 사이트를 열어보세요 https://demo.guru99.com/V4/
  2. 테스트 시나리오

  3. 응용 프로그램에 로그인하십시오.
  4. 테스트 시나리오

생성 단계 TestNG 경청자

위의 테스트 시나리오에서는 Listener를 구현하겠습니다.

단계 1) 'ITestListener'를 구현하는 'ListenerTest' 클래스를 만듭니다. 수정 지시 문자 위로 마우스를 이동한 다음 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) 다음으로, 정규 프로젝트 클래스, 즉 "TestCases"에 이 리스너를 구현합니다. 클래스와 인터페이스에 연결하는 방법에는 두 가지가 있습니다.

첫 번째 방법은 아래와 같이 Listeners 주석(@Listeners)을 사용하는 것입니다.

@Listeners(Listener_Demo.ListenerTest.class)

아래와 같이 "TestCases" 클래스에서 이를 사용합니다.

마지막으로 "TestCases" 클래스는 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("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를 사용합니다.

프로젝트에 여러 클래스가 있는 경우 각 클래스에 리스너를 추가하는 것은 번거롭고 오류가 발생하기 쉽습니다.

이런 경우에는 testng.xml을 생성하고 XML에 리스너 태그를 추가할 수 있습니다.

여러 클래스에 리스너 사용

이 리스너는 보유한 클래스 수에 관계없이 테스트 제품군 전체에서 구현됩니다. 이 XML 파일을 실행하면 리스너는 언급된 모든 클래스에서 작동합니다. 또한 리스너 클래스를 원하는 만큼 선언할 수도 있습니다.

제품 개요

로그를 생성하거나 사용자 정의하려면 리스너가 필요합니다. TestNG ~에보고하다 Selenium 웹드라이버.

  • 다양한 유형의 리스너가 있으며 요구 사항에 따라 사용할 수 있습니다.
  • 리스너는 Selenium 웹 드라이버 스크립트에서 사용되는 인터페이스입니다.
  • Listener 사용 시연 Selenium
  • 여러 클래스에 대한 리스너 구현