그룹 테스트 - 포함 및 제외(예)

TestNG 단위, 기능, 종단 간, UI 및 통합 테스트와 같은 다양한 유형의 테스트 디자인을 다루는 테스트 프레임워크입니다.

XML을 생성하고 Maven을 통해 실행하면 단일 또는 여러 패키지를 실행할 수 있습니다(여기서 패키지는 클래스 그룹을 적절한 디렉터 형식으로 캡슐화하는 것을 의미합니다).

TestNG 예시가 있는 그룹

우리는 그룹을 사용합니다 테스트 중 언제,

  • 우리는 (기능에 따라) 서로 다른 클래스에서 별도로 테스트 메서드를 정의하고 싶지 않습니다.
  • 동시에 일부 테스트 사례는 코드에 존재하지 않는 것처럼 무시(실행하지 않음)하고 싶습니다.
  • 따라서 이를 수행하려면 그룹화해야 합니다. 이는 testNG에서 지원하는 "include" 및 "exclude" 메커니즘을 사용하여 수행됩니다.

아래 예에서는 XML 파일에서 그룹을 사용하는 방법에 대한 구문을 보여주었습니다.

@Test (groups = { "bonding", "strong_ties" })

여기서 우리는 "bonding"과 "strong_ties"라는 2개의 그룹 이름을 사용하고 있습니다(이것들은 여러분의 희망에 따라 변경될 수 있는 논리적인 이름입니다).

<groups> 태그는 XML에서 그룹의 시작을 정의합니다.

테스트 클래스에서 언급된 그룹을 선택하려면 XML을 사용자 정의하세요. 아래에는 XML 파일에서 그룹을 선언하는 방법에 대한 구문이 나와 있습니다.

 <groups>		
   <run>		
    <include name="bonding" />		
   </run>		
  </groups>		

따라서 한 클래스에 10개의 테스트 메서드가 있다고 가정해 보겠습니다.

그 중에서,

  • 6가지 방법이 “bonding” 그룹에 태그되어 있으며
  • 4개는 "strong_ties" 그룹에 있습니다

앞으로는 maven/Java 경로를 선택하고 Eclipse IDE에서 XML 파일을 사용하여 그룹 사용법을 보여줍니다. Java 메이븐 프로젝트 기반.

다음에 대한 XML 생성 TestNG 태그 포함

  • Maven 프레임워크의 XML(Extensible Markup Language) 파일에는 하나 이상의 테스트 정보가 포함되어 있으며 다음으로 정의됩니다. 꼬리표.
  • XML의 테스트 정보는 다음과 같이 표현됩니다. 꼬리표 하나 이상의 항목을 포함할 수 있습니다. TestNG 수업.
  • A Java 다음을 포함하는 클래스 @테스트 테스트 방법 위의 주석은 다음과 같이 정의됩니다. TestNG 방법.

여러 태그를 순서대로 사용하여 작동하는 testNG xml을 빌드합니다. , 그리고

  • 첫 번째는 testNG가 실행 보고서를 생성하기 위해 보고하는 전체 정보를 정의하는 논리적 이름을 담고 있는 태그입니다.
  • 두 번째는 , 통과, 실패, 테스트 케이스 건너뛰기 등의 테스트 실행 보고서 정보와 총 실행 시간 및 그룹 정보와 같은 기타 정보를 보유하는 논리적 이름입니다.
  • 세 번째는com.group.guru99.TC_Class1” />, com.group.guru99 는 사용된 패키지이고 Test Class 이름은 TC_Class1 입니다.
<?xml version="1.0" encoding="UTF-8" ?>	
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">	
 	<suite name="Suite">	
		<test name="Guru 99 Smoke Test Demo">	
			<groups>	
				<run>	
   					 <include name="strong_ties" />	
        		</run>	
       		</groups>	
			<classes>	
					<class name="com.group.guru99.TC_Class1" />	
           	</classes>	
		</test>	
  </suite>	

우리는 아래 섹션에 제공될 예정인 비디오에 이 XML을 사용할 것입니다.

테스트 XML의 "제외" 또는 "포함"

그룹 메커니즘의 사용이 복잡하다고 가정하면 testNG XML을 이용하면 테스트를 제외하거나 포함하는 기능을 쉽게 구현할 수 있습니다.

Exclude Tag:  Syntax for exclude tag <exclude name="${TEST_CASE_NAME}" />
Include Tag:  Syntax for include tag <include name="${TEST_CASE_NAME}" />

참고 : 한 번에 여러 테스트 사례를 포함/제외할 수 있으며 이는 그룹에서도 작동합니다.

달리기 TestNG 코드 그룹화, 포함, 제외(비디오 데모)

의 설명 Java 코드와 XML 그룹화, 제외 및 포함 XML의 태그입니다.

테스트 시나리오: Guru99 데모 뱅킹 사이트를 시작하고 로그인 페이지에서 몇 가지 사항을 확인한 후 자격 증명을 입력하고 로그인할 때 애플리케이션에서 몇 가지 새로운 사항을 다시 확인합니다.

달리기 TestNG 그룹화, 포함, 제외 코드

참고 : 코딩하는 각 단계는 별도의 메서드로 선언해야 하지만, 실행되면 XML 파일의 항목에 따라 테스트 메서드가 실행됩니다.

  • 방법 1: 브라우저 초기화 및 URL 실행(tc01LaunchURL())
  • 방법 2: 로그인 페이지 제목 확인(tc02VerifyLaunchPage())
  • 방법 3: 로그인 양식(tc03EnterCredentials())에 사용자 이름과 비밀번호를 입력하세요.
  • 방법 4: 사용자 대시보드에서 관리자 ID 유무 확인(tc04VerifyLoggedInPage())
  • 방법 5: 사용자 DashBoard에서 몇 가지 링크를 더 확인합니다(tc05VerifyHyperlinks()).

우리 시나리오의 코드는 다음과 같습니다.

package com.group.guru99;	

import java.util.concurrent.TimeUnit;	

import org.openqa.selenium.By;	
import org.openqa.selenium.WebDriver;	
import org.openqa.selenium.firefox.FirefoxDriver;	
import org.testng.Assert;	
import org.testng.annotations.Test;	

public class TC_Class1 {	
    public static final WebDriver webDriver = new FirefoxDriver();;	

    String launchPageHeading = "//h3[text()='Guru99 Bank']";	
    final String userName_element = "//input[@name='uid']", password_element = "//input[@name='password']",	
            signIn_element = "//input[@name='btnLogin']";	
    final String userName_value = "mngr28642", password_value = "ydAnate";	
    final String managerID = "//td[contains(text(),'Manger Id')]";	
    final String newCustomer = "//a[@href='addcustomerpage.php']", fundTransfer = "//a[@href='FundTransInput.php']";	

    /**	
     * This test case will initialize the webDriver	
     */	
    @Test(groups = { "bonding", "strong_ties" })	
    public void tc01LaunchURL() {	
        webDriver.manage().window().maximize();	
        webDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);	
        webDriver.get("http://www.demo.guru99.com/V4/");	
    }	

    /**	
     * Will check the presence of Heading on Login Page	
     */	
    @Test(groups = { "bonding" })	
    public void tc02VerifyLaunchPage() {	
        Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(),	
                "Home Page heading is not displayed");	
        System.out.println("Home Page heading is displayed");	
    }	

    /**	
     * This test case will enter User name, password and will then click on	
     * signIn button	
     */	
    @Test(groups = { "bonding", "strong_ties" })	
    public void tc03EnterCredentials() {	
        webDriver.findElement(By.xpath(userName_element)).sendKeys(userName_value);	
        webDriver.findElement(By.xpath(password_element)).sendKeys(password_value);	
        webDriver.findElement(By.xpath(signIn_element)).click();	
    }	

    /**	
     * This test case will verify manger's ID presence on DashBoard	
     */	
    @Test(groups = { "strong_ties" })	
    public void tc04VerifyLoggedInPage() {	
        Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(),	
                "Manager ID label is not displayed");	
        System.out.println("Manger Id label is displayed");	
    }	

    /**	
     * This test case will check the presence of presence of New customer link	
     * And FundTransfer link in Left pannel	
     */	
    @Test(groups = { "bonding" })	
    public void tc05VerifyHyperlinks() {	
        Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(),	
                "New customer hyperlink is not displayed");	
        System.out.println("New customer hyperlink is displayed");	

        Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(),	
                "Fund Transfer hyperlink is not displayed");	
        System.out.println("Fund Transfer hyperlink is displayed");	
    }	

}	

참고: 자격 증명은 20일 동안만 유효하므로 로컬 컴퓨터에서 코드를 실행하려고 하면 잘못된 자격 증명 오류가 발생할 수 있습니다.

코드 설명:

위에서 언급했듯이 우리는 독립적인 방법으로 각 작업을 수행하기 위한 5개의 테스트 사례를 만들었습니다.

모든 메소드에 대해 그룹 매개변수를 일부 값과 연관시켰습니다.

기본적으로 이는 "강력한 유대감"과 "결속력"이라는 차별화 그룹의 이름입니다.

  • 첫 번째 및 세 번째 방법은 "bonding", "strong_ties"로 태그가 지정되어 있습니다. 즉, 그룹 중 하나에서 XML이 업데이트되면 이 테스트 케이스 실행됩니다.
  • 두 번째 방법은 "본딩" 그룹에만 태그가 지정되어 있습니다. 이는 XML이 본딩 그룹으로 업데이트되는 경우를 의미합니다. 이 경우에만 이 테스트 케이스가 실행됩니다.
  • 네 번째 테스트 사례는 strong_ties 그룹에 태그가 지정되었습니다. 즉, 이 테스트 사례는 XML이 strong_ties 그룹 이름으로 업데이트된 경우에만 실행됩니다.
  • 마지막으로 다섯 번째 테스트 케이스는 본딩 그룹에 연결됩니다. 즉, 이 테스트 케이스는 XML이 본딩 그룹 이름으로 업데이트되는 경우에만 실행됩니다.

전체적으로 4가지 시나리오가 있습니다.

시나리오 1 : 그룹 이름에 관계없이 모든 테스트 케이스를 실행하고 싶습니다. 이 경우 XML 실행에서 그룹 태그를 제거하겠습니다.

시나리오 2 : 우리는 두 그룹, 즉 strong_ties 또는 bonding에만 관련된 몇 가지 테스트를 실행하고 싶습니다. 다음을 참조하세요.

  • 이번 영상에서는 XML을 실행하면서 Group 매개변수에 주석을 달았습니다. 따라서 모든 테스트 케이스가 실행된 것을 볼 수 있습니다.
  • 계속해서 비디오를 보면 이제 XML에 그룹 이름이 포함되어 있으므로 해당 그룹과 관련된 테스트 사례만 실행되는 것을 볼 수 있습니다.

시나리오 3 : 테스트 케이스를 제외하기 위해 Exclude 메커니즘을 사용하고 있습니다. 영상을 참고해주세요

  • 실행 중인 XML에 해당 이름을 작성하여 제외 소수 테스트 케이스(tc02)를 사용했음을 알 수 있습니다. 최종 결과에서 언급된 테스트 사례는 실행되지 않았습니다.

시나리오 4 : 마지막으로 테스트 사례(tc01LaunchURL, tc03EnterCredentials 및 tc05VerifyHyperlinks)를 포함하기 위해 포함 테스트 메커니즘을 사용하고 있습니다. 영상을 참고해주세요

이 영상에서는 XML에서 언급된 테스트 케이스가 테스트 실행 중에만 실행되는 것을 볼 수 있습니다.

위 예시의 코드에서 코드를 다운로드하세요.

위의 코드를 다운로드하세요

결론

우리는 Maven 프로젝트에서 XML을 사용하여 테스트 케이스를 실행하는 비교적 새로운 방법을 배웠습니다.

먼저 testNG에 대한 간략한 소개를 제공하고 그룹, 제외 및 포함의 전체 기술 사양을 설명했습니다.