TestNG 튜토리얼: Selenium의 주석 및 프레임워크란 무엇입니까?

TestNG는 무엇입니까?

테스트NG NG는 "Next Generation"을 의미하는 자동화 테스트 프레임워크입니다. TestNG는 다음에서 영감을 받았습니다. JUnit 주석(@)을 사용합니다. TestNG는 JUnit의 단점을 극복하고 다음과 같이 설계되었습니다. 종단 간 테스트 쉽게.

TestNG를 사용하면 적절한 보고서를 생성할 수 있으며, 얼마나 많은 테스트 사례가 통과, 실패, 건너뛰었는지 쉽게 알 수 있습니다. 실패한 테스트 사례를 별도로 실행할 수 있습니다.

예 :

  • XNUMX개의 테스트 케이스가 있고 각 테스트 케이스마다 하나의 메소드가 작성되었다고 가정합니다(프로그램이 testNG를 사용하지 않고 기본 메소드를 사용하여 작성되었다고 가정합니다). 이 프로그램을 처음 실행하면 세 가지 방법이 성공적으로 실행되고 네 번째 방법은 실패합니다. 그런 다음 네 번째 방법에 있는 오류를 수정합니다. 이제 처음 세 가지 방법이 성공적으로 실행되었으므로 네 번째 방법만 실행하려고 합니다. TestNG를 사용하지 않으면 불가능합니다.
  • Selenium의 TestNG는 test-output 폴더에 testng-failed.xml 파일과 같은 옵션을 제공합니다. 실패한 테스트 사례만 실행하려면 이 XML 파일을 실행하라는 의미입니다. 실패한 테스트 케이스만 실행합니다.

위의 개념 외에도 TestNG의 장점, @test 주석을 사용하여 테스트 메서드를 만드는 방법, 이러한 클래스를 테스트 모음 파일로 변환하고 실행하는 방법과 같은 TestNG에 대해 자세히 알아봅니다. eclipse 명령줄에서도 마찬가지입니다.

TestNG를 Selenium과 함께 사용하는 이유는 무엇입니까?

기본 Selenium 테스트는 테스트 결과에 대한 적절한 형식을 생성하지 않습니다. Selenium에서 TestNG를 사용하면 테스트 결과를 생성할 수 있습니다.

대부분의 Selenium 사용자는 이것을 이상으로 사용합니다. 주니트 장점 때문입니다. TestNG에는 많은 기능이 있지만 Selenium에서 사용할 수 있는 가장 중요한 기능에만 집중하겠습니다. 폴로wing Selenium TestNG의 주요 기능은 다음과 같습니다.

  • 테스트 케이스 실행 횟수, 통과한 테스트 케이스 수, 실패한 테스트 케이스 수, 건너뛴 테스트 케이스 수를 포함하여 적절한 형식으로 보고서를 생성합니다.
  • 여러 테스트 케이스를 testng.xml 파일로 변환하면 보다 쉽게 ​​그룹화할 수 있습니다. 어떤 테스트 케이스를 먼저 실행해야 하는지 우선순위를 정할 수 있습니다.
  • '호출 횟수'라는 키워드만 사용하면 동일한 테스트 케이스를 루프 없이 여러 번 실행할 수 있습니다.
  • testng를 사용하면 여러 브라우저에서 여러 테스트 사례를 실행할 수 있습니다. 브라우저 테스트.
  • TestNG 프레임워크는 TestNG Maven, Jenkins 등과 같은 도구와 쉽게 통합될 수 있습니다.
  • 테스트에 사용되는 주석은 이해하기 매우 쉽습니다. 예: @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest
  • WebDriver에는 보고서 생성을 위한 기본 메커니즘이 없습니다. TestNG는 아래와 같이 읽을 수 있는 형식으로 보고서를 생성할 수 있습니다.
  • Selenium과 함께 TestNG 사용

  • TestNG는 테스트 코딩 방식을 단순화합니다. 우리 테스트에서는 더 이상 정적 메인 메소드가 필요하지 않습니다. 작업 순서는 메서드가 정적일 필요가 없는 이해하기 쉬운 주석으로 규제됩니다.
  • Selenium과 함께 TestNG 사용

    Selenium과 함께 TestNG 사용

  • 포착되지 않은 예외는 테스트를 조기에 종료하지 않고 TestNG에 의해 자동으로 처리됩니다. 이러한 예외는 보고서에서 실패한 단계로 보고됩니다.

JUnit에 비해 TestNG의 장점

JUnit에 비해 TestNG에는 세 가지 주요 장점이 있습니다.

  • 주석이 이해하기 더 쉽습니다.
  • 테스트 케이스를 더 쉽게 그룹화할 수 있습니다.
  • 병렬 테스트가 가능하다

TestNG의 주석이란 무엇입니까?

TestNG의 주석은 아래 메서드가 실행되는 방식을 제어할 수 있는 코드 줄입니다.. 항상 @ 기호가 앞에 옵니다. 매우 초기의 빠른 TestNG 예제는 아래와 같습니다.

TestNG의 주석

주석이 논의됩니다 later "TestNG에 사용된 주석" 섹션에 있으므로 위의 TestNG 예제를 아직 이해하지 못하더라도 괜찮습니다. 지금은 TestNG의 주석이 JUnit보다 코딩하고 이해하기 쉽다는 점을 기억하는 것이 중요합니다.

테스트를 병렬로 실행하는 기능은 TestNG에서는 사용할 수 있지만 JUnit에서는 사용할 수 없으므로 Selenium Grid를 사용하는 테스터에게는 TestNG 프레임워크가 더 선호됩니다.

TestNG에서 테스트 케이스를 작성하는 방법은 무엇입니까?

단계 1) 비즈니스 로직을 작성하고 코드에 TestNG 주석을 삽입하세요.
단계 2) 클래스 이름, 그룹 이름, 패키지 이름 등과 같은 추가 정보를 추가하세요.
단계 3) TestNG를 실행합니다.

TestNG 주석을 사용하여 테스트 케이스 만들기

이제 Selenium에서 TestNG Annotations를 사용하여 첫 번째 테스트 사례를 만드는 방법을 알아봅니다.

테스트 사례를 만들기 전에 먼저 새 TestNG 프로젝트를 설정해야 합니다. Eclipse 이름을 "FirstTestNGProject"로 지정합니다.

새로운 TestNG 프로젝트 설정

1 단계 : 파일 > 새로 만들기 >를 클릭합니다. 자바 프로젝트

새로운 TestNG 프로젝트 설정

2 단계 : 프로젝트 이름으로 "FirstTestNGProject"를 입력하고 다음을 클릭합니다.

새로운 TestNG 프로젝트 설정

3 단계 : 이제 TestNG 라이브러리를 프로젝트로 가져오기 시작합니다. "라이브러리" 탭을 클릭한 다음 "라이브러리 추가…"를 클릭합니다.

새로운 TestNG 프로젝트 설정

4 단계 : 라이브러리 추가 대화 상자에서 "TestNG"를 선택하고 다음을 클릭합니다.

새로운 TestNG 프로젝트 설정

5 단계 : Finish를 클릭하십시오.

새로운 TestNG 프로젝트 설정

TestNG가 라이브러리 목록에 포함되어 있음을 알 수 있습니다.

새로운 TestNG 프로젝트 설정

6 단계 : 이제 Selenium API가 포함된 JAR 파일을 추가하겠습니다. 이 파일은 다음에서 다운로드한 Java 클라이언트 드라이버에 있습니다. https://www.selenium.dev/downloads/ Selenium을 설치할 때 Eclipse 이전 장에서.

새로운 TestNG 프로젝트 설정

그런 다음 Selenium JAR 파일을 배치한 위치로 이동합니다.

새로운 TestNG 프로젝트 설정

외부 JAR을 추가한 후 화면은 다음과 같습니다.

새로운 TestNG 프로젝트 설정

7 단계 : 마침을 클릭하고 FirstTestNGProject가 표시되는지 확인합니다. Eclipse의 패키지 탐색기 창입니다.

새로운 TestNG 프로젝트 설정

새로운 TestNG 테스트 파일을 만드는 방법

이제 이 TestNG 튜토리얼에서 프로젝트 설정을 마쳤으므로 새 TestNG 파일을 생성하겠습니다.

1 단계 : 'src'를 클릭하고 기타를 선택하세요.
“src” 패키지 폴더를 마우스 오른쪽 버튼으로 클릭한 다음 새로 만들기 > 기타…를 선택합니다.

새 TestNG 테스트 파일 생성

2 단계 : TestNG 클래스를 선택합니다.
TestNG 폴더를 클릭하고 "TestNG 클래스" 옵션을 선택합니다. 다음을 클릭하세요.

새 TestNG 테스트 파일 생성

3 단계 : 값을 입력합니다.
해당 입력에 아래 표시된 값을 입력하십시오. boxes를 클릭하고 마침을 클릭합니다. Java 파일 이름을 "FirstTestNGFile"로 지정했습니다.

새 TestNG 테스트 파일 생성

4 단계 : 템플릿이 생성되었습니다.
Eclipse 아래 표시된 TestNG 파일에 대한 템플릿을 자동으로 생성해야 합니다.

새 TestNG 테스트 파일 생성

첫 번째 TestNG 테스트 케이스 예제 코딩

이제 첫 번째를 만들어 보겠습니다. 테스트 케이스 Mercury Tours의 홈페이지가 올바른지 확인합니다. 아래 TestNG 예에 표시된 대로 코드를 입력합니다.

package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;

public class firsttestngfile {
    public String baseUrl = "http://demo.guru99.com/test/newtours/";
    String driverPath = "C:\\geckodriver.exe";
    public WebDriver driver ; 
     
  @Test
  public void verifyHomepageTitle() {
       
      System.out.println("launching firefox browser"); 
      System.setProperty("webdriver.gecko.driver", driverPath);
      driver = new FirefoxDriver();
      driver.get(baseUrl);
      String expectedTitle = "Welcome: Mercury Tours";
      String actualTitle = driver.getTitle();
      Assert.assertEquals(actualTitle, expectedTitle);
      driver.close();
  }
}

다음 내용을 확인하세요.wing.

  • TestNG에서는 main() 메소드가 필요하지 않습니다.
  • 메소드는 정적일 필요는 없습니다.
  • @Test 주석을 사용했습니다. @Test는 그 아래의 메소드가 테스트 케이스임을 알리는 데 사용됩니다.. 이 경우 verifyHomepageTitle() 메서드를 테스트 케이스로 설정했기 때문에 그 위에 '@Test' 주석을 배치했습니다.
  • TestNG에서 주석을 사용하므로 org.testng.annotations.* 패키지를 가져와야 했습니다.
  • 우리는 Assert 클래스를 사용했습니다. Assert 클래스는 TestNG에서 검증 작업을 수행하는 데 사용됩니다.. 이를 사용하려면 org.testng.Assert 패키지를 가져와야 합니다.

단일 TestNG 파일에 여러 테스트 사례(따라서 여러 @Test 주석)가 있을 수 있습니다. 이 내용은 더 자세히 다루겠습니다. later "TestNG에 사용되는 주석" 섹션에서.

테스트 실행

테스트를 실행하려면 다음에서 파일을 실행하면 됩니다. Eclipse 평소처럼. Eclipse 두 개의 출력을 제공합니다. 하나는 콘솔 창에, 다른 하나는 TestNG 결과 창에 제공됩니다.

테스트 실행

테스트 실행

TestNG에서 생성된 보고서 확인

콘솔 창 Eclipse TestNG 결과 창은 그래픽 보고서를 제공하는 반면, 테스트 사례 결과에 대한 텍스트 기반 보고서를 제공합니다.

TestNG로 생성된 보고서 확인하기

HTML 보고서 생성

TestNG에는 HTML 형식으로 보고서를 생성하는 기능이 있습니다.

1 단계 : 이전 섹션에서 생성한 FirstTestNGFile을 실행한 후 프로젝트 탐색기 창에서 프로젝트 이름(FirstTestNGProject)을 마우스 오른쪽 버튼으로 클릭한 다음 "새로 고침" 옵션을 클릭합니다.

HTML 보고서 생성

2 단계 : "test-output" 폴더가 생성되었습니다. 확장하고 index.html 파일을 찾으세요. 이 HTML 파일은 가장 최근의 테스트 실행 결과에 대한 보고서입니다.

HTML 보고서 생성

3 단계 : Double- 해당 index.html 파일을 클릭하여 엽니다. Eclipse의 내장 웹 브라우저입니다. 일반 웹 브라우저에서와 마찬가지로 F5 키를 눌러 테스트를 다시 실행한 후 언제든지 이 페이지를 새로 고칠 수 있습니다.

HTML 보고서 생성

TestNG에 사용되는 주석

이전 섹션에서는 @Test 주석을 소개했습니다. 이제 좀 더 발전된 Annotation과 그 사용법에 대해 공부해보겠습니다.

여러 테스트 케이스

단일 TestNG 파일에서 여러 @Test 주석을 사용할 수 있습니다. 기본적으로 @Test로 주석이 달린 메서드는 알파벳순으로 실행됩니다. 아래 코드를 참조하세요. c_test, a_test, b_test 메소드는 코드에서 알파벳순으로 정렬되어 있지 않지만 알파벳순으로 실행됩니다.

TestNG에 사용되는 주석

이 코드를 실행하고 생성된 index.html 페이지에서 '시간순 보기'를 클릭하세요.

TestNG에 사용되는 주석

파라미터

메소드를 다른 순서로 실행하려면 "우선순위" 매개변수를 사용하십시오. 매개변수는 주석의 기능을 수정하는 키워드입니다..

  • 매개변수에는 값을 할당해야 합니다. 옆에 "="를 배치한 다음 값을 입력하면 됩니다.
  • 매개변수는 아래 표시된 코드 조각처럼 주석 바로 뒤에 배치되는 한 쌍의 괄호로 묶입니다.

파라미터

TestNG는 가장 낮은 우선순위 값부터 가장 큰 우선순위 값까지 @Test 주석을 실행합니다. 우선순위 값이 연속적일 필요는 없습니다.

파라미터

TestNG HTML 보고서는 우선순위의 오름차순 값에 따라 메소드가 실행되었음을 확인합니다.

파라미터

다중 매개변수

"우선순위" 외에도 @Test에는 "true" 또는 "false"로만 설정할 수 있는 "alwaysRun"이라는 또 다른 매개변수가 있습니다. 단일 주석에 두 개 이상의 매개변수를 사용하려면 매개변수를 쉼표로 구분하세요. 아래에 표시된 것과 같은 것입니다.

@Test(priority = 0, alwaysRun = true)

다중 매개변수

@BeforeTest 및 @AfterTest

@BeforeTest 이 주석 아래의 메소드가 실행됩니다. TestNG 파일의 첫 번째 테스트 케이스 이전.
@애프터테스트 이 주석 아래의 메소드가 실행됩니다. TestNG 파일의 모든 테스트 케이스가 실행된 후.

아래 코드를 고려해보세요.

package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class firsttestngfile {
    public String baseUrl = "http://demo.guru99.com/test/newtours/";
    String driverPath = "C:\\geckodriver.exe";
    public WebDriver driver ; 
     
     @BeforeTest
      public void launchBrowser() {
          System.out.println("launching firefox browser"); 
          System.setProperty("webdriver.gecko.driver", driverPath);
          driver = new FirefoxDriver();
          driver.get(baseUrl);
      }
      @Test
      public void verifyHomepageTitle() {
          String expectedTitle = "Welcome: Mercury Tours";
          String actualTitle = driver.getTitle();
          Assert.assertEquals(actualTitle, expectedTitle);
     }
      @AfterTest
      public void terminateBrowser(){
          driver.close();
      }
}

위의 표와 코드에 제시된 논리를 적용하면 메서드가 실행되는 순서는 다음과 같다고 예측할 수 있습니다.

  • 1st – 발사브라우저()
  • 2nd – verifyHomepageTitle()
  • 3rd – 종료브라우저()

주석 블록의 배치는 실행되는 시간 순서에 영향을 주지 않고 상호 교환될 수 있습니다.. TestNG 예제를 통해 이해하고 코드가 아래와 유사하게 보이도록 주석 블록을 재배열해 보겠습니다.

package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class firsttestngfile {
    public String baseUrl = "http://demo.guru99.com/test/newtours/";
    String driverPath = "C:\\geckodriver.exe";
    public WebDriver driver ; 
     @AfterTest                            //Jumbled
      public void terminateBrowser(){
          driver.close();
      }
     @BeforeTest                            //Jumbled
      public void launchBrowser() {
          System.out.println("launching firefox browser"); 
          System.setProperty("webdriver.gecko.driver", driverPath);
          driver = new FirefoxDriver();
          driver.get(baseUrl);
      }
      @Test                                //Jumbled
      public void verifyHomepageTitle() {
          String expectedTitle = "Welcome: Mercury Tours";
          String actualTitle = driver.getTitle();
          Assert.assertEquals(actualTitle, expectedTitle);
     }
      
}

위의 코드를 실행하고 다음을 확인하세요.

다중 매개변수

@BeforeMethod 및 @AfterMethod

안녕하세요. 이 주석 아래의 메소드가 실행됩니다. 각 테스트 케이스의 각 메소드 이전에.
안녕하세요. 이 주석 아래의 메소드가 실행됩니다. 각 테스트 케이스의 각 메서드 다음에.

Mercury Tours에서 아래 두 링크의 대상 페이지 제목을 확인하고 싶다고 가정해 보겠습니다.

다중 매개변수

테스트 흐름은 다음과 같습니다.

  • 홈페이지에 가서 제목을 확인해 보세요.
  • REGISTER를 클릭하고 대상 페이지의 제목을 확인하세요.
  • 홈페이지로 돌아가서 제목이 올바른지 확인하세요.
  • 지원을 클릭하고 대상 페이지의 제목을 확인하세요.
  • 홈페이지로 돌아가서 제목이 올바른지 확인하세요.

아래 코드는 위에서 언급한 시나리오를 효율적으로 실행하기 위해 @BeforeMethod 및 @AfterMethod를 사용하는 방법을 보여줍니다.

package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
@Test
public class firsttestngfile {
    public String baseUrl = "http://demo.guru99.com/test/newtours/";
    String driverPath = "C:\\geckodriver.exe";
    public WebDriver driver; 
    public String expected = null;
    public String actual = null;
        @BeforeTest
      public void launchBrowser() {
          System.out.println("launching firefox browser"); 
          System.setProperty("webdriver.gecko.driver", driverPath);
          driver= new FirefoxDriver();
          driver.get(baseUrl);
      }
      
      @BeforeMethod
      public void verifyHomepageTitle() {
          String expectedTitle = "Welcome: Mercury Tours";
          String actualTitle = driver.getTitle();
          Assert.assertEquals(actualTitle, expectedTitle);
      }
          @Test(priority = 0)
      public void register(){
          driver.findElement(By.linkText("REGISTER")).click() ;
          expected = "Register: Mercury Tours";
          actual = driver.getTitle();
          Assert.assertEquals(actual, expected);
      }
          @Test(priority = 1)
      public void support() {
            driver.findElement(By.linkText("SUPPORT")).click() ;
            expected = "Under Construction: Mercury Tours";
            actual = driver.getTitle();
            Assert.assertEquals(actual, expected);
      }
      @AfterMethod
      public void goBackToHomepage ( ) {
            driver.findElement(By.linkText("Home")).click() ;
      }
       
      @AfterTest
      public void terminateBrowser(){
          driver.close();
      }
}

이 테스트를 실행한 후 TestNG는 다음을 보고해야 합니다.wing 순서.

다중 매개변수

간단히 말해서 @BeforeMethod에는 실행해야 하는 메서드가 포함되어야 합니다. 전에 @AfterMethod에는 실행해야 하는 메소드가 포함되어 있는 동안 각 테스트 케이스 시간 내에 각 테스트 케이스.

TestNG 주석 요약

안녕하세요.: 이 제품군의 모든 테스트가 실행되기 전에 주석이 달린 메서드가 실행됩니다.

@애프터스위트: 이 제품군의 모든 테스트가 실행된 후에 주석이 달린 메서드가 실행됩니다.

@BeforeTest: 태그 내부 클래스에 속하는 테스트 메소드가 실행되기 전에 주석이 달린 메소드가 실행됩니다.

@애프터테스트: 주석이 달린 메서드는 태그 내부 클래스에 속한 모든 테스트 메서드가 실행된 후에 실행됩니다.

안녕하세요.: 이 구성 방법이 이전에 실행될 그룹 목록입니다. 이 메서드는 이러한 그룹에 속하는 첫 번째 테스트 메서드가 호출되기 직전에 실행되도록 보장됩니다.

@AfterGroups: 이 구성 방법이 실행될 그룹의 목록입니다. 이 메서드는 이러한 그룹에 속하는 마지막 테스트 메서드가 호출된 직후에 실행되도록 보장됩니다.

뿡 빵뀨: 현재 클래스의 첫 번째 테스트 메서드가 호출되기 전에 주석이 달린 메서드가 실행됩니다.

@방과후: 현재 클래스의 모든 테스트 메서드가 실행된 후에 주석이 달린 메서드가 실행됩니다.

안녕하세요.: 주석이 달린 메서드는 각 테스트 메서드 전에 실행됩니다.

안녕하세요.: 주석이 달린 메소드는 각 테스트 메소드 후에 실행됩니다.

@테스트: 주석이 달린 메서드는 테스트 케이스의 일부입니다.

“내게 능력 주시는 자 안에서 내가 모든 것을 할 수 있느니라”

  • TestNG는 테스트 Selenium 테스트를 더 쉽게 이해하고 이해하기 쉬운 보고서를 생성할 수 있는 프레임워크입니다.
  • JUnit에 비해 TestNG의 주요 장점은 다음과 같습니다.wing.
    • 주석을 사용하고 이해하기가 더 쉽습니다.
    • 테스트 케이스를 더 쉽게 그룹화할 수 있습니다.
    • TestNG를 사용하면 다음을 만들 수 있습니다. 병렬 테스트.
  • 콘솔 창 Eclipse TestNG 창은 테스트 결과의 그래픽 출력과 기타 의미 있는 데이터를 제공하므로 텍스트 기반 결과를 생성하는 반면 TestNG 창이 더 유용합니다.tails 예를 들면 :
    • 각 메소드의 런타임.
    • 메소드가 실행된 시간순
  • TestNG는 HTML 기반 보고서를 생성할 수 있습니다.
  • 주석은 일반적인 Java TestNG 메소드와 마찬가지로 매개변수를 사용할 수 있습니다.
  • TestNG Dataprovider는 단일 실행으로 테스트 케이스의 다양한 값을 전달하는 테스트 함수에 매개변수를 전달하는 방법입니다.