자동화테스트/Selenium2018. 12. 22. 08:00

두 가지 주요 리스너가 있습니다.

  1. WebDriver Listener
  2. TestNG 리스너

이 자습서에서는 Testng Listener에 대해 설명합니다 여기에 배울 점이 있습니다.

Selenium WebDriver의 Listener는 무엇입니까?

리스너는 기본 TestNG의 동작을 수정하는 인터페이스로 정의됩니다. 이름에서 알 수 있듯이 Listener는 셀 룰 스크립트에 정의 된 이벤트를 "수신"하여 이에 따라 행동합니다. 리스너 인터페이스를 구현하여 셀렌에 사용됩니다. TestNG 보고서 또는 로그를 사용자 정의 할 수 있습니다. TestNG 리스너에는 여러 유형이 있습니다.

Selenium WebDriver의 TestNG 리스너

TestNG의 리스너 유형

TestNG의 동작을 변경할 수있는 많은 유형의 리스너가 있습니다.

다음은 몇 가지 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 .

위의 인터페이스를 TestNG Listener라고합니다. 이러한 인터페이스는 로그를 생성하거나 테스트 보고서를 사용자 정의하기 위해 selenium에서 사용됩니다 .

이 자습서에서는 ITestListener를 구현합니다.

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

  • OnStart- 어떤 테스트가 시작되면 ONSTART 메서드가 호출됩니다.
  • onTestSuccess- onTestSuccess 메소드는 모든 테스트의 성공에 대해 호출됩니다.
  • onTestFailure- onTestFailure 메서드는 테스트 실패시 호출됩니다.
  • onTestSkipped- onTestSkipped 메서드는 Test를 건너 뛰면 호출됩니다.
  • onTestFailedButWithinSuccessPercentage- 메서드는 테스트가 실패하지만 성공 비율 내에있을 때마다 호출됩니다.
  • onFinish- onFinish 메서드는 모든 테스트가 실행 된 후에 호출됩니다.

테스트 시나리오 :

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

  1. Firefox를 시작하고 " http://demo.guru99.com/V4/" 사이트를 엽니 다.

Selenium WebDriver의 TestNG 리스너

  1. 응용 프로그램에 로그인하십시오.

Selenium WebDriver의 TestNG 리스너

TestNG 수신기를 만드는 단계

위의 테스트 시나리오에서 리스너를 구현합니다.

1 단계) "Listener_Demo"클래스를 만들고 'ITestListener'를 구현합니다. 수정 지시 텍스트 위로 마우스를 움직이면 Eclipse는 아래 화면과 같이 2 개의 빠른 수정을 제안합니다.

Selenium WebDriver의 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'클래스를 수정합시다. 특히 다음과 같은 방법을 수정합니다.

onTestSkipped, onTestStart, onTestSuccess 등

수정은 간단합니다. 우리는 단지 시험의 이름을 인쇄합니다.

콘솔에 로그가 생성됩니다. 사용자가 통과, 실패 및 건너 뛰기 상태를 쉽게 알 수 있습니다.

수정 후 코드는 다음과 같이 보입니다.

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

    // 테스트 케이스가 실패하면이 메소드가 호출됩니다.		
    @Override		
    public void onTestFailure(ITestResult Result) 					
    {		
    System.out.println("The name of the testcase failed is :"+Result.getName());					
    }		

    // 테스트 케이스가 건너 뛴 경우이 메서드가 호출됩니다.	
    @Override		
    public void onTestSkipped(ITestResult Result)					
    {		
    System.out.println("The name of the testcase Skipped is :"+Result.getName());					
    }		

    // 테스트 케이스가 시작될 때이 메소드가 호출됩니다.		
    @Override		
    public void onTestStart(ITestResult Result)					
    {		
    System.out.println(Result.getName()+" test case started");					
    }		

    // 테스트 케이스가 성공하면이 메소드가 호출됩니다.			
    @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("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);			
}		
}

3 단계) 다음으로,이 리스너를 일반적인 프로젝트 클래스, 즉 "TestCases"에 구현하십시오. 클래스와 인터페이스에 연결하는 두 가지 다른 방법이 있습니다.

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

@Listener (Listener_Demo.ListenerTest.class)				

우리는 이것을 아래와 같이 "TestCases"클래스에서 사용합니다.

그래서 마지막으로 Listener 주석을 사용한 후에 "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;             		

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

프로젝트 구조는 다음과 같습니다.

Selenium WebDriver의 TestNG 리스너

4 단계) : "TestCases"클래스를 실행합니다. @Test로 주석 된 메소드의 동작에 따라 "ListenerTest"클래스의 메소드가 자동으로 호출됩니다.

5 단계) : 로그가 콘솔에 표시되는 출력을 확인하십시오.

'TestCases'의 출력은 다음과 같습니다.

Selenium WebDriver의 TestNG 리스너

[TestNG] 러닝 :

C : \ Users \ gauravn \ AppData \ Local \ Temp \ testng-eclipse - 1058076918 \ testng-customsuite.xml

로그인 테스트 케이스가 시작되었습니다.

전달 된 테스트 케이스의 이름은 다음과 같습니다. 로그인

TestToFail 테스트 케이스 시작됨

이 테스트 방법은 실패합니다.

실패한 테스트 케이스의 이름은 : TestToFail

PASSED : Login

FAILED : TestToFail

java.lang.AssertionError : expected [true] but found [false]

여러 클래스에 리스너 사용.

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

이 경우 testng.xml을 만들고 XML로 리스너 태그를 추가 할 수 있습니다.

Selenium WebDriver의 TestNG 리스너

이 리스너는 가지고있는 클래스의 수에 관계없이 테스트 스위트 전체에 구현됩니다. 이 XML 파일을 실행하면 리스너는 언급 된 모든 클래스에서 작동합니다. 원하는 수의 리스너 클래스도 선언 할 수 있습니다.

개요:

리스너는 Selenium Webdriver에서 로그를 생성하거나 TestNG 보고서를 사용자 정의해야합니다.

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


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
Posted by 프리스케이터