자동화테스트/Selenium2018. 12. 28. 08:00



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

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






이 튜토리얼에서는,

예제가있는 TestNG 그룹

우리는 Testng 에서 그룹을 사용합니다 .

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

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

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

여기서 우리는 "본딩"과 "strong_ties"라는 2 개의 그룹 이름을 사용합니다 (이 이름은 원하는대로 변경할 수있는 논리적 이름입니다).

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

XML을 사용자 정의하여 테스트 클래스에서 언급 된 그룹을 선택하십시오. 다음은 XML 파일에서 그룹을 선언하는 방법에 대한 구문입니다

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

따라서 클래스 내에 10 개의 테스트 메소드가 있다고 가정 해 봅시다.

그들 중에서,

  • 6 가지 방법은 "본딩"그룹에서 태그가 지정되고
  • 4 명이 "strong_ties"그룹에 있습니다.

앞으로 우리는 maven / Java 경로를 설정하고 Eclipse IDE를 사용하여 Java 기반 maven 프로젝트 에서 XML 파일을 사용하여 그룹의 사용법을 보여줍니다 .

환경 변수에 maven 및 Java 경로 설정 (Windows 사용자의 경우)

https://www.guru99.com/maven-jenkins-with-selenium-complete-tutorial.html을 참조 하십시오.

https://www.guru99.com/install-java.html

XML 소개 및 XML 파일 작성 방법

  • Maven 프레임 워크의 XML (Extensible Markup Language) 파일에는 하나 이상의 테스트에 대한 정보가 들어 있으며 <suite> 태그 로 정의됩니다 .
  • XML의 테스트 정보는 <test> 태그 로 표시되며 하나 이상의 TestNG 클래스를 포함 할 수 있습니다.
  • 테스트 메소드 위에 @Test 주석 이 포함 된 Java 클래스 는 TestNG 메소드로 정의됩니다.

<suite>, <test>, <class>와 같이 작동중인 testNG xml을 만들기 위해 시퀀스에서 여러 태그가 사용됩니다.

  • 첫 번째는 <suite> 태그로, 실행 보고서를 생성하기 위해보고 된 testNG에 대한 전체 정보를 정의하는 논리 이름을 포함합니다.
  • 둘째는 <test name = "Guru 99 Smoke Test Demo">이며 합격, 불합격, 테스트 케이스 건너 뛰기, 총 실행 시간, 그룹 정보 등의 테스트 실행 리포트 정보를 보유하고있는 논리적 인 이름입니다.
  • 세 번째는 <class name = " 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 name = "$ {TEST_CASE_NAME}"/>
  • Include Tag : 포함 태그 구문 <include name = "$ {TEST_CASE_NAME}"/>

참고 : 한 번에 여러 테스트 사례를 포함하거나 제외 할 수 있으며 그룹과 함께 작동합니다.

XML 파일을 사용하여 코드를 실행하는 방법 (비디오 데모)

그룹 과 함께 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 일 동안 만 유효하므로 로컬 컴퓨터에서 코드를 실행하려고하면 잘못된 자격 증명 오류가 발생할 수 있습니다. 아래 단계를 통해 로그인 자격 증명을 생성하십시오.

  1. http://www.demo.guru99.com 시작
  2. 입력란에 이메일 ID를 입력하십시오.
  3. enter를 클릭하고 로그인 정보를 화면에 표시하십시오.

코드 설명 :

위에서 언급 한 것처럼 우리는 독립적 인 방법으로 각 작업을 수행하기위한 5 가지 테스트 케이스를 만들었습니다.

모든 메소드에 어떤 값이 들어있는 그룹 매개 변수를 연관 지을 수 있습니다.

기본적으로 이들은 차별화 된 그룹의 이름, 즉 "strong_ties"및 "bonding"입니다.

  • 첫 번째와 세 번째 방법은 "본딩", "strong_ties"로 태그가 지정됩니다. 즉, 그룹에서 XML이 업데이트되면이 테스트 사례 가 실행됩니다.
  • 두 번째 방법은 "본딩"그룹에만 태그가 지정됩니다. 이는 XML이 본딩 그룹으로 업데이트되는 경우를 의미합니다. 이 경우에만이 테스트 케이스가 실행됩니다.
  • 네 번째 테스트 케이스는 strong_ties 그룹에 태그가 지정됩니다. 이는 XML이 strong_ties 그룹 이름으로 업데이트 된 경우에만이 테스트 케이스가 실행됨을 의미합니다.
  • 마지막 5 번째 테스트 케이스는 아니지만 마지막 5 번째 테스트 케이스가 본딩 그룹에 연결됩니다. 즉,이 테스트 케이스는 XML이 본딩 그룹 이름으로 업데이트 된 경우에만 실행됩니다.

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

  1. 우리는 그룹 이름에 관계없이 모든 테스트 케이스를 실행하려고합니다. 이 경우 그룹 태그를 실행중인 XML에서 제거합니다.
  1. 우리는 그룹 중 하나, 즉 strong_ties 또는 본딩에만 관련된 몇 가지 테스트를 테스트 케이스를 실행하고 싶습니다.
  • 참조하시기 바랍니다:

  • 이 비디오에서 Group 매개 변수는 실행중인 XML에서 주석 처리되었습니다. 따라서 모든 테스트 케이스가 실행 된 것을 볼 수 있습니다.
  • 비디오에 이어 이제 우리는 XML에 그룹 이름을 포함 시켰습니다. 그 그룹에 특정한 테스트 케이스 만이 실행 중임을 알 수 있습니다.
  1. 테스트 케이스를 제외하기 위해 Exclude 메커니즘을 사용하고 있습니다.
  • 참조하시기 바랍니다

  • 우리는 실행중인 XML에 이름을 써서 테스트 케이스 (tc02)를 거의 제외하지 않았다는 것을 알 수 있습니다. 언급 된 최종 결과에서 테스트 케이스는 실행되지 않았습니다.

4. 마지막으로, 테스트 케이스 (tc01LaunchURL, tc03EnterCredentials 및 tc05VerifyHyperlinks)를 포함하는 테스트 메커니즘을 사용합니다.

  • 참조하시기 바랍니다

  • 이 비디오에서는 XML로 언급 된 테스트 사례가 테스트 실행 중에 만 실행되고 있음을 알 수 있습니다.

언급 된 URL에서 코드를 다운로드하십시오. 모든 유형의 testXML이 포함될 것입니다.


위의 코드 다운로드

GroupTestNG.zip



결론

Maven 프로젝트에서 XML을 사용하여 테스트 케이스를 실행하는 새로운 방법을 알게되었습니다.

우리는 testNG에 대한 간략한 소개를 시작하여 Groups의 전체 기술 사양을 포함하고 제외 및 포함합니다

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
Posted by 프리스케이터