오이-태그
기능 파일에 시나리오가 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] − 이 두 태그와 일치하는 시나리오를 실행해야한다고 말합니다.