그룹 테스트 - 포함 및 제외(예)
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 데모 뱅킹 사이트를 시작하고 로그인 페이지에서 몇 가지 사항을 확인한 후 자격 증명을 입력하고 로그인할 때 애플리케이션에서 몇 가지 새로운 사항을 다시 확인합니다.
참고 : 코딩하는 각 단계는 별도의 메서드로 선언해야 하지만, 실행되면 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에 대한 간략한 소개를 제공하고 그룹, 제외 및 포함의 전체 기술 사양을 설명했습니다.