두 가지 주요 리스너가 있습니다.
- WebDriver Listener
- TestNG 리스너
이 자습서에서는 Testng Listener에 대해 설명합니다 . 여기에 배울 점이 있습니다.
Selenium WebDriver의 Listener는 무엇입니까?
리스너는 기본 TestNG의 동작을 수정하는 인터페이스로 정의됩니다. 이름에서 알 수 있듯이 Listener는 셀 룰 스크립트에 정의 된 이벤트를 "수신"하여 이에 따라 행동합니다. 리스너 인터페이스를 구현하여 셀렌에 사용됩니다. TestNG 보고서 또는 로그를 사용자 정의 할 수 있습니다. TestNG 리스너에는 여러 유형이 있습니다.
TestNG의 리스너 유형
TestNG의 동작을 변경할 수있는 많은 유형의 리스너가 있습니다.
다음은 몇 가지 TestNG 수신기입니다.
- IAnnotationTransformer ,
- IAnnotationTransformer2 ,
- IConfigurable ,
- IConfigurationListener ,
- IExecutionListener,
- IHookable ,
- IInvokedMethodListener ,
- IInvokedMethodListener2 ,
- IMethodInterceptor ,
- IReporter,
- ISuiteListener,
- ITestListener .
위의 인터페이스를 TestNG Listener라고합니다. 이러한 인터페이스는 로그를 생성하거나 테스트 보고서를 사용자 정의하기 위해 selenium에서 사용됩니다 .
이 자습서에서는 ITestListener를 구현합니다.
ITestListener에는 다음과 같은 메서드가 있습니다.
- OnStart- 어떤 테스트가 시작되면 ONSTART 메서드가 호출됩니다.
- onTestSuccess- onTestSuccess 메소드는 모든 테스트의 성공에 대해 호출됩니다.
- onTestFailure- onTestFailure 메서드는 테스트 실패시 호출됩니다.
- onTestSkipped- onTestSkipped 메서드는 Test를 건너 뛰면 호출됩니다.
- onTestFailedButWithinSuccessPercentage- 메서드는 테스트가 실패하지만 성공 비율 내에있을 때마다 호출됩니다.
- onFinish- onFinish 메서드는 모든 테스트가 실행 된 후에 호출됩니다.
테스트 시나리오 :
이 테스트 시나리오에서는 로그인 프로세스를 자동화하고 'ItestListener'를 구현합니다.
- Firefox를 시작하고 " http://demo.guru99.com/V4/" 사이트를 엽니 다.
- 응용 프로그램에 로그인하십시오.
TestNG 수신기를 만드는 단계
위의 테스트 시나리오에서 리스너를 구현합니다.
1 단계) "Listener_Demo"클래스를 만들고 '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'클래스를 수정합시다. 특히 다음과 같은 방법을 수정합니다.
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); } }
프로젝트 구조는 다음과 같습니다.
4 단계) : "TestCases"클래스를 실행합니다. @Test로 주석 된 메소드의 동작에 따라 "ListenerTest"클래스의 메소드가 자동으로 호출됩니다.
5 단계) : 로그가 콘솔에 표시되는 출력을 확인하십시오.
'TestCases'의 출력은 다음과 같습니다.
[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로 리스너 태그를 추가 할 수 있습니다.
이 리스너는 가지고있는 클래스의 수에 관계없이 테스트 스위트 전체에 구현됩니다. 이 XML 파일을 실행하면 리스너는 언급 된 모든 클래스에서 작동합니다. 원하는 수의 리스너 클래스도 선언 할 수 있습니다.
개요:
리스너는 Selenium Webdriver에서 로그를 생성하거나 TestNG 보고서를 사용자 정의해야합니다.
- 다양한 유형의 리스너가 있으며 요구 사항에 따라 사용할 수 있습니다.
- 리스너는 selenium web driver 스크립트에서 사용되는 인터페이스입니다.
- Selenium에서 Listener 사용 시연
- 여러 클래스에 대한 리스너 구현
'자동화테스트 > Selenium' 카테고리의 다른 글
IntelliJ IDEA & Selenium Webdriver 사용 방법 (0) | 2018.12.25 |
---|---|
Python에서 Selenium을 사용하는 방법 : 완전한 튜토리얼 (1) | 2018.12.24 |
Selenium Webdriver에서 AJAX 호출 처리 (0) | 2018.12.21 |
Selenium에서 SSL 인증서 오류 처리 (1) | 2018.12.20 |
Selenium WebDriver의 원하는 기능 (0) | 2018.12.19 |