TestNG: 여러 테스트 스위트를 실행하는 방법 Selenium

TestNG 프로젝트 내에서 테스트 메소드, 테스트 클래스 및 테스트 케이스를 병렬로 실행할 수 있습니다. 병렬 실행을 수행하면 테스트가 시작되고 동시에 실행되므로 '실행 시간'을 줄일 수 있습니다.neo다른 스레드에서 사용됩니다.

여기에서는 다음을 사용하여 여러 클래스(일명 다른 제품군)를 실행하는 방법을 살펴보겠습니다. TestNG.

1단계) 만들기 TestNG테스트 실행을 위한 .xml 파일

그렇게 하려면 아래 단계를 따르십시오.

  1. 새 프로젝트 만들기 eclipse
  2. 프로젝트에 두 개의 패키지를 만듭니다(이름을 com.suite1 및 com.suite2로 지정).
  3. 각 패키지에 클래스를 생성하고(이름을 Flipkart.java 및 Snapdeal.java로 지정) 각 클래스에 아래 코드를 복사합니다.
  4. 프로젝트에 새 파일을 만들고 이름을 다음과 같이 지정합니다. testng.xml(테스트 플러그인을 설치했는지 확인하세요. eclipse, 사용 가능한 지침 여기에서 지금 확인해 보세요.). Testng.xml에는 모든 구성(클래스 이름, 테스트 이름 및 슈트 이름)이 포함되어 있습니다.

Flipkart.java

package com.suite1;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class Flipkart{

	WebDriver driver = new FirefoxDriver();
	String username = ""; // Change to your username and passwrod
	String password = "";

	// This method is to navigate flipkart URL
	@BeforeClass
	public void init() {
		driver.manage().window().maximize();
		driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
		driver.navigate().to("https://www.flipkart.com");
	}

	// To log in flipkart
	@Test
	public void login() {
		driver.findElement(By.partialLinkText("Login")).click();
		driver.findElement(
				By.cssSelector(".fk-input.login-form-input.user-email"))
				.sendKeys(username);
		driver.findElement(
				By.cssSelector(".fk-input.login-form-input.user-pwd"))
				.sendKeys(password);
		driver.findElement(By.cssSelector(".submit-btn.login-btn.btn")).click();
	}

	// Search For product
	@Test
	public void searchAndSelectProduct() {
		driver.findElement(By.id("fk-top-search-box")).sendKeys("moto g3");
		driver.findElement(
				By.cssSelector("search-bar-submit.fk-font-13.fk-font-bold"))
				.click();

		// select the first item in the search results
		String css = ".gd-row.browse-grid-row:nth-of-type(1) > div:nth-child(1)>div>div:nth-child(2)>div>a";
		driver.findElement(By.cssSelector(css)).click();
	}

	@Test
	public void buyAndRemoveFromCart() {
		driver.findElement(
				By.cssSelector(".btn-express-checkout.btn-big.current"))
				.click();
		driver.findElement(By.cssSelector(".remove.fk-inline-block")).click();
		Alert a = driver.switchTo().alert();
		a.accept();
	}

	@Test
	public void logout() {
		Actions s = new Actions(driver);
		WebElement user = driver.findElement(By.partialLinkText(username));
		s.moveToElement(user).build().perform();
		driver.findElement(By.linkText("Logout")).click();
	}

	@AfterClass
	public void quit() {
		driver.close();
	}
}

SnapDeal.java

package com.suite2;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class SnapDeal {

	WebDriver driver = new FirefoxDriver();
	String username = ""; // Change to your username and passwrod
	String password = "";
	String pinCode = "";

	// This method is to navigate snapdeal URL
	@BeforeClass
	public void init() {
		driver.manage().window().maximize();
		driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
		driver.navigate().to("https://www.snapdeal.com");
	}

	// To log in flipkart
	@Test
	public void login() {
		driver.findElement(By.xpath("//button[text()='Login']")).click();

		driver.switchTo().frame("loginIframe");

		driver.findElement(By.cssSelector("div[onClick='getLoginForm()']"))
				.click();

		driver.findElement(By.id("j_username")).sendKeys(username);
		driver.findElement(By.id("j_password_login")).sendKeys(password);
		driver.findElement(By.id("signin_submit")).click();

		driver.switchTo().defaultContent();
	}

	// Search For product
	@Test
	public void searchAndSelectProduct() {
		driver.findElement(By.cssSelector(".col-xs-20.searchformInput.keyword"))
				.sendKeys("iphone 6s");
		driver.findElement(By.cssSelector(".sd-icon.sd-icon-search")).click();

		// select the first item in the search results
		String css = ".product_grid_row:nth-of-type(1)>div:nth-child(1)";
		driver.findElement(By.cssSelector(css)).click();
	}

	@Test
	public void buyAndRemoveFromCart() {

		driver.findElement(By.xpath("//li[contains(text(),'Silver')]")).click();
		driver.findElement(By.id("pincode-check")).sendKeys(pinCode);
		driver.findElement(By.id("buy-button-id")).click();
		
		driver.findElement(By.cssSelector("i[title='Delete Item']")).click();
		Alert a = driver.switchTo().alert();	
		a.accept();
	}

	@Test
	public void logout() {
		
		driver.findElement(By.linkText("START SHOPPING NOW")).click();
		Actions s = new Actions(driver);
		WebElement user = driver.findElement(By.cssSelector(".sd-icon.sd-icon-user"));
		s.moveToElement(user).build().perform();
		driver.findElement(By.linkText("Logout")).click();
	}

	@AfterClass
	public void quit() {
		driver.close();
	}
}

TestNg. XML

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">	

<suite thread-count="1" verbose="1" name="Gmail Suite" annotations="JDK" parallel="tests">
         
  <test name="flipkart">
	 <classes>
	   <class name="com.suite1.Flipkart"/>
	 </classes>
   </test>
   
  <test name="Myntra">
     <classes>
       <class name="com.suite2.SnapDeal"/>
     </classes>
   </test>
</suite>

최종 프로젝트 구조는 아래와 같습니다.

만들기 TestNG테스트 실행을 위한 .xml 파일

2단계) 병렬 실행 TestNG

위와 같이 xml 파일을 생성한 후 다음 단계에서는 병렬 테스트를 실행해보겠습니다. 아래는 코드입니다.

병렬 실행 TestNG

1) 스레드 수: 숫자 스크립트를 기반으로 병렬 실행을 할 때 사용됩니다. 병렬 또는 순차적 순서로 실행됩니다.

2) 장황한: 실행을 기록하는 데 사용됩니다.tails 콘솔에서. 값은 1-10이어야 합니다. 로그 드tails 콘솔 창의 verbose 속성 값을 높이면 더 자세하고 명확해집니다. testng.xml 구성 파일.

3) 이름: 스위트의 이름입니다. 여기에서는 "Gmail 모음곡"

4) 병렬: 스크립트를 병렬로 실행하려면 값이 테스트/클래스/메서드/스위트일 수 있습니다. 기본값은 없음

마우스 오른쪽 클릭 testng.xml을 선택하고 테스트로 실행을 선택하면 성공하면 모든 결과가 표시됩니다.

위의 코드를 실행하면 다음과 같은 결과가 나옵니다.wing 출력.

출력:

병렬 실행 TestNG

1) 다음에 주어진 제품군의 이름 testng. XML

병렬 실행 TestNG

2) 다음에 주어진 시험 이름 testng. XML

병렬 실행 TestNG

3) 주어진 클래스의 이름 testng. XML

병렬 실행 TestNG

4) .java 파일에 @Test 주석이 달린 메소드 이름

병렬 실행 TestNG

처럼wise, 스냅딜을 위한 테스트 스위트도 실행합니다.

결론

위의 예에서 사용 방법을 살펴보았습니다. Testng 병렬 테스트를 실행합니다. TestNG 단일 구성 파일(XML)에서 여러 테스트를 병렬로 실행할 수 있는 옵션을 제공합니다.