오이-태그

기능 파일에 시나리오가 1 개, 2 개 또는 5 개만 있으면 간단 해 보입니다. 그러나 실제 생활에서는 발생하지 않습니다. 테스트중인 각 기능에 대해 단일 기능 파일에 10 개, 20 개 또는 더 많은 수의 시나리오가있을 수 있습니다. 다른 목적 (연기 테스트 / 회귀 테스트), 다른 전망 (개발자 / QA / BA), 다른 상태 (실행 준비 / 진행중인 작업) 등을 나타낼 수 있습니다. 이러한 대량 실행을 관리하는 방법은 무엇입니까?

이를 위해 Cucumber는 기능 파일에서 태그를 사용하여 시나리오 실행을 구성하는 방법을 이미 제공했습니다. 유용한 태그로 각 시나리오를 정의 할 수 있습니다. 나중에 runner 파일에서 Cucumber가 실행할 특정 태그 (시나리오와 같이)를 결정할 수 있습니다. 태그는 "@"로 시작합니다. "@"뒤에는 태그를 정의하는 관련 텍스트가있을 수 있습니다. 예를 들어 이것을 이해합시다.

기능 파일에 두 개 이상의 시나리오가 있다고 가정합니다. 연기 테스트의 일부로 하나의 시나리오 만 실행하려고합니다. 따라서 첫 번째는 해당 시나리오를 식별하는 것이고 두 번째는 시나리오 시작 부분에 "@SmokeTest"텍스트로 태그를 지정하는 것입니다. 자세히 살펴 보겠습니다.

Step 1 − 다음과 같은 이름의 Maven 프로젝트를 생성합니다. cucumberTag.

Step 2− 이름이 지정된 패키지 생성 cucumberTag 아래에 src/test/java

Step 3− 이름이 지정된 기능 파일을 생성합니다. cucumberTag.feature.

파일 내에 다음 텍스트를 작성하고 저장하십시오. 이 기능 파일에는 하나만 다음으로 표시된 두 가지 시나리오가 포함되어 있습니다.SmokeTest 꼬리표.

Feature − 오이 태그

Scenario Outline − 소셜 네트워킹 사이트의 로그인 기능.

사용자가 Facebook으로 이동하는 경우

사용자 이름을 "<username>"으로 입력하고 Password를 "<password>"로 입력하면

그런 다음 로그인이 실패해야합니다

| username  | password  | 
| username1 | password1 | 
| username2 | password2 |

# 다음 시나리오는 SmokeTest로 태그가 지정되었으며 실행되어야합니다. 헉헉

Scenario:

사용자가 Facebook으로 이동하는 경우

사용자 이름을 "<>"로 입력하고 암호를 "<>"로 입력하면

그런 다음 사용자는 로그인 재시 도로 리디렉션되어야합니다.

Step 4 − 단계 정의 파일을 생성합니다.

  • 패키지 개요를 선택하고 마우스 오른쪽 버튼으로 클릭합니다.

  • '새로 만들기'파일을 클릭합니다.

  • 파일에 다음과 같은 이름을 지정하십시오. cucumberTag.java

  • 파일 내에 다음 텍스트를 작성하고 저장하십시오.

package cucumberTag;
 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

import cucumber.annotation.en.Given; 
import cucumber.annotation.en.Then; 
import cucumber.annotation.en.When; 

public class cucumberTag { 
   WebDriver driver = null; 
	
   @Given("^user navigates to facebook$") 
   public void goToFacebook() { 
      driver = new FirefoxDriver(); 
      driver.navigate().to("https://www.facebook.com/"); 
   } 
	
   @When("^I enter Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$") 
   public void I_enter_Username_as_and_Password_as(String arg1, String arg2) {
      driver.findElement(By.id("email")).sendKeys(arg1);
      driver.findElement(By.id("pass")).sendKeys(arg2);
      driver.findElement(By.id("u_0_v")).click(); 
   } 
	
   @Then("^login should be unsuccessful$") 
   public void validateRelogin() { 
      if(driver.getCurrentUrl().equalsIgnoreCase(
         "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
            System.out.println("Test Pass"); 
      } else { 
         System.out.println("Test Failed"); 
      }
      driver.close(); 
   } 
	
   @Then("^User should be redirected to login retry$") 
   public void loginRetry() { 
      if(driver.getCurrentUrl().equalsIgnoreCase(
         "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
            System.out.println("Test Pass"); 
      } else { 
         System.out.println("Test Failed"); 
      } 
      driver.close(); 
   } 
}

Step 5 − 러너 클래스 파일을 생성합니다.

  • 다음과 같은 러너 클래스를 만듭니다. runTest.java 패키지 내부.

  • 다음 코드를 작성하십시오.

  • 파일을 저장하십시오.

package cucumberTag;
 
import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}) 

public class runTest { }
  • 테스트 옵션을 실행하십시오.

  • 마우스 오른쪽 버튼을 클릭하고 옵션을 선택합니다. ‘Run as’.

  • JUnit 테스트를 선택하십시오.

이 클래스 파일을 실행할 때 다음 사항을 관찰합니다.

  • Facebook은 새 Firefox 웹 브라우저 인스턴스에서 열립니다.

  • 사용자 이름 및 비밀번호 필드에 값이 제공되지 않습니다.

  • 로그인이 클릭됩니다.

  • 로그인 재시도 페이지가로드됩니다.

기능 파일 내에서 태그를 정의하는 데 제한이 없습니다. 필요에 따라 사용할 태그와 실행할 시나리오를 도출 할 수 있습니다.

주로 두 가지 유형의 태그가 있습니다.

  • Default tag− 기본 태그에는 미리 정의 된 의미가 있습니다. 예 @ Dev, @ Ignore

  • Custom tag − 사용자 정의 태그는 태그 정의에 적합한 텍스트를 선택할 수있는 완전한 유연성을 제공합니다.

기능 수준에서 태그를 정의 할 수도 있습니다. 기능 레벨에서 태그를 정의하면 해당 기능 파일 내의 모든 시나리오가 해당 태그를 상속하는지 확인합니다. 시나리오의 특성에 따라 단일 기능에 대해 둘 이상의 태그를 사용할 수 있습니다. Cucumber가 적절한 호출을 찾을 때마다 특정 시나리오가 실행됩니다.

Cucumber는 또한 태그 선택을 반대로하는 방법을 제공합니다. 25 개의 정의 된 시나리오 중 10 개는 연기 테스트로 표시됩니다. 회귀 테스트 시나리오 만 실행하면됩니다.

이를 위해 JUnit 러너 클래스에서 "~"를 사용하여 연기 테스트 시나리오를 제외 할 수 있습니다. 다음과 같이 보일 것입니다.

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}, tags = {"~@SmokeTest"}) 

public class runTest { }

여러 태그를 정의하는 동안 논리적 또는 / 및 논리적 및 작동을 정의 할 수도 있습니다.

  • 논리 또는 러너 클래스 정의- @dev,@wip −이 태그와 일치하는 시나리오를 실행해야한다고합니다.

  • 논리 또는 러너 클래스 정의- [@dev,~@wip] − 이 두 태그와 일치하는 시나리오를 실행해야한다고 말합니다.