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

TestNG?

TestNG NG는 "Next Generation"을 의미하는 자동화 테스트 프레임워크입니다. TestNG 영감을받은 JUnit 주석(@)을 사용합니다. TestNG 단점을 극복한 JUnit 그리고 만들도록 설계되었습니다 종단 간 테스트 쉽게.

사용 TestNG를 사용하면 적절한 보고서를 생성할 수 있으며 통과, 실패, 건너뛴 테스트 사례 수를 쉽게 알 수 있습니다. 실패한 테스트 사례를 별도로 실행할 수 있습니다.

예 :

  • 테스트 케이스가 5개 있고, 각 테스트 케이스에 대해 하나의 메서드가 작성되어 있다고 가정합니다(testNG를 사용하지 않고 메인 메서드를 사용하여 프로그램을 작성했다고 가정). 이 프로그램을 먼저 실행하면 세 개의 메서드가 성공적으로 실행되고 네 번째 메서드는 실패합니다. 그런 다음 네 번째 메서드에 있는 오류를 수정합니다. 이제 네 번째 메서드만 실행하려고 합니다. 처음 세 개의 메서드는 어차피 성공적으로 실행되기 때문입니다. 를 사용하지 않고는 불가능합니다. TestNG.
  • The TestNG in Selenium 옵션을 제공합니다. 즉, test-output 폴더에 testng-failed.xml 파일이 있습니다. 실패한 테스트 사례만 실행하려면 이 XML 파일을 실행해야 합니다. 실패한 테스트 사례만 실행합니다.

위의 개념 외에도 다음에 대해 자세히 알아볼 것입니다. TestNG, 의 장점은 무엇입니까? TestNG, @test 주석을 사용하여 테스트 메서드를 생성하는 방법, 이러한 클래스를 테스트 모음 파일로 변환하고 Eclipse와 명령줄에서 실행하는 방법.

왜 사용 하는가? TestNG 과 Selenium?

태만 Selenium 테스트는 테스트 결과에 대한 적절한 형식을 생성하지 않습니다. 사용 TestNG in Selenium, 테스트 결과를 생성할 수 있습니다.

다리 Selenium 사용자는 이 기능을 더 많이 사용합니다. 주닛 장점 때문입니다. 의 기능이 너무 많아요 TestNG하지만 우리는 다음에서 사용할 수 있는 가장 중요한 것들에만 집중할 것입니다. Selenium. 다음은 주요 기능입니다. Selenium TestNG:

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

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

      TestNG 과 Selenium

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

의 장점 TestNG 위에 JUnit

크게 3가지 장점이 있습니다 TestNG 위에 JUnit:

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

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

주석 TestNG 아래 메소드가 실행되는 방식을 제어할 수 있는 코드 라인입니다.. 항상 @ 기호가 앞에 옵니다. 아주 일찍 그리고 빠르게 TestNG 예는 아래에 표시된 것입니다.

주석 TestNG

주석은 나중에 "주석에 사용되는" 섹션에서 논의됩니다. TestNG,”그래서 위의 내용을 이해하지 못하더라도 괜찮습니다. TestNG 아직 예가 없습니다. 지금은 주석이 TestNG 에서보다 코딩하고 이해하기가 더 쉽습니다. JUnit.

테스트를 병렬로 실행하는 기능은 다음에서 사용할 수 있습니다. TestNG 하지만 안 JUnit때문에 TestNG 프레임워크는 다음을 사용하는 테스터에게 더 선호됩니다. Selenium 그리드.

테스트 케이스 작성 방법 TestNG?

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

다음을 사용하여 테스트 사례 만들기 TestNG 주석

이제 첫 번째 테스트 케이스를 생성하는 방법을 배우겠습니다. TestNG 주석 Selenium:

테스트 케이스를 만들기 전에 먼저 새 케이스를 설정해야 합니다. TestNG 프로젝트 Eclipse 이름을 '첫 번째TestNG프로젝트".

새로운 설정 TestNG 프로젝트

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

새로운 설정 TestNG 프로젝트

2 단계 : “먼저”를 입력하세요TestNGProject”를 프로젝트 이름으로 설정하고 Next를 클릭합니다.

새로운 설정 TestNG 프로젝트

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

새로운 설정 TestNG 프로젝트

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

새로운 설정 TestNG 프로젝트

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

새로운 설정 TestNG 프로젝트

당신은 그것을 알아야합니다 TestNG 라이브러리 목록에 포함되어 있습니다.

새로운 설정 TestNG 프로젝트

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

새로운 설정 TestNG 프로젝트

그런 다음 Selenium JAR 파일.

새로운 설정 TestNG 프로젝트

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

새로운 설정 TestNG 프로젝트

7 단계 : 마침을 클릭하고 첫 번째 항목이TestNG프로젝트가 다음에 표시됩니다. Eclipse의 패키지 탐색기 창입니다.

새로운 설정 TestNG 프로젝트

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

이제 프로젝트 설정이 완료되었습니다. TestNG 튜토리얼, 새로운 것을 만들어 봅시다 TestNG 파일.

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

새 항목 만들기 TestNG 테스트 파일

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

새 항목 만들기 TestNG 테스트 파일

3 단계 : 값을 입력합니다.
아래에 표시된 값을 적절한 입력 상자에 입력하고 마침을 클릭합니다. 우리가 이름을 지었다는 것을 알 수 있습니다. Java 파일을 “첫번째TestNG파일".

새 항목 만들기 TestNG 테스트 파일

4 단계 : 템플릿이 생성되었습니다.
Eclipse 자동으로 템플릿을 생성해야 합니다. TestNG 아래 보이는 파일.

새 항목 만들기 TestNG 테스트 파일

우리의 첫 번째 코딩 TestNG 테스트 케이스 예

이제 첫 번째를 만들어 보겠습니다. 테스트 케이스 그러면 확인해볼게 Mercury 투어 홈페이지가 맞습니다. 아래에 표시된 대로 코드를 입력하세요. 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();
  }
}

다음 사항에 유의하세요.

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

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

테스트 실행

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

테스트 실행

테스트 실행

작성자가 작성한 보고서 확인 TestNG

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

작성자가 작성한 보고서 확인 TestNG

HTML 보고서 생성

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

1 단계 : 첫 번째 실행 후TestNG이전 섹션에서 생성한 파일에서 프로젝트 이름(첫 번째)을 마우스 오른쪽 버튼으로 클릭합니다.TestNG프로젝트)를 프로젝트 탐색기 창에서 선택한 다음 "새로 고침" 옵션을 클릭하세요.

HTML 보고서 생성

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

HTML 보고서 생성

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

HTML 보고서 생성

사용된 주석 TestNG

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

여러 테스트 케이스

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

사용된 주석 TestNG

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

사용된 주석 TestNG

파라미터

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

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

파라미터

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

파라미터

The 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

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

In Mercury 투어, 예를 들어 아래 두 링크의 대상 페이지 제목을 확인하고 싶다고 가정해 보겠습니다.

다중 매개변수

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

  • 홈페이지에 가서 제목을 확인해 보세요.
  • 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 다음 순서를 보고해야 합니다.

다중 매개변수

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

요약 TestNG 주석

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

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

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

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

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

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

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

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

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

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

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

결론

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