오이-데이터 테이블
자동화 작업을하는 동안 우리는 다양한 시나리오에 직면 할 수 있습니다. 각 시나리오는 서로 다른 의미와 요구를 전달합니다.
처음부터 우리는 소셜 네트워킹 사이트에 대한 로그인 기능의 예를 들어 왔습니다. 여기서 두 개의 입력 매개 변수를 전달했습니다. 더 많은 가능성을 생각해 봅시다. "새 사용자 등록"기능은 어떻습니까? 일반적으로 소셜 네트워킹 사이트에 새 사용자를 등록하는 동안 입력 매개 변수는 무엇입니까? 다음과 같은 것-
- 사용자 이름
- 이메일 주소
- Password
- 비밀번호를 다시 입력하세요
- Birthdate
- Gender
- 전화 번호
Feature − 신규 사용자 등록.
잘못된 입력을 전달한 후 새 사용자 등록이 실패했는지 확인하십시오.
새 사용자 등록 페이지에 있습니다.
사용자 이름과 이메일 주소를 이메일 주소와 비밀번호로 입력하고 비밀번호와 생년월일, 성별, 전화 번호를 다시 입력하면 사용자 등록이 실패합니다.
언뜻보기에 약간 지저분 해 보입니다. 그렇다면 이러한 입력 청크를 관리하는 더 좋은 방법이 있습니까? 답은 "데이터 테이블"이 될 수 있습니다. 데이터 테이블은 단일 태그에 제공되는 입력 세트입니다. 이 태그는 GIVEN, WHEN 또는 THEN 일 수 있습니다.
데이터 테이블을 사용하여 위의 시나리오를 작성하면 다음과 같습니다.
새 사용자 등록 페이지에있는 경우
페이지에 유효한 데이터를 입력 할 때
| Fields | Values |
| First Name | Tom |
| Last Name | Kenny |
| Email Address | [email protected] |
| Re-enter Email Address | [email protected] |
| Password | Password1 |
| Birthdate | 01 |
그러면 사용자 등록이 성공해야합니다.
예
데이터 테이블의 예를 자동화 해 보겠습니다.
Step 1 − "DataTableTest"라는 이름의 Maven 테스트 프로젝트를 생성합니다.
File → New → Others → Maven → Maven Project → Next로 이동합니다.
제공 group Id (그룹 ID는 모든 프로젝트에서 고유하게 프로젝트를 식별합니다).
제공 artifact Id (artifact Id는 버전이없는 jar의 이름입니다. 소문자로 된 이름을 선택할 수 있습니다.)
마침을 클릭하십시오.
pom.xml 열기-
Eclipse의 왼쪽에있는 패키지 탐색기로 이동합니다.
CucumberTest 프로젝트를 확장하십시오.
pom.xml 파일을 찾습니다.
마우스 오른쪽 버튼을 클릭하고 "텍스트 편집기"로 열기 옵션을 선택합니다.
Selenium에 대한 종속성 추가 : 이것은 중앙 저장소에서 로컬 저장소로 다운로드 할 Selenium jar 파일을 Maven을 나타냅니다.
Open pom.xml이 편집 모드에 있으며 프로젝트 태그 내에 종속성 태그 (<dependencies> </ dependencies>)를 만듭니다.
종속성 태그 내에 종속성 태그를 만듭니다. (<dependency> </ dependency>).
종속성 태그 내에 다음 정보를 제공하십시오.
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.47.1</version>
</dependency>
Cucumber-Java에 대한 종속성 추가-이것은 중앙 저장소에서 로컬 저장소로 다운로드 할 Cucumber 파일을 Maven을 나타냅니다.
종속성 태그를 하나 더 만듭니다.
종속성 태그 내에 다음 정보를 제공하십시오.
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
Cucumber-JUnit에 대한 종속성 추가-이것은 중앙 저장소에서 로컬 저장소로 Cucumber JUnit 파일을 다운로드 할 Maven을 나타냅니다.
종속성 태그를 하나 더 만듭니다.
종속성 태그 내에 다음 정보를 제공하십시오.
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
JUnit에 대한 종속성 추가-이것은 중앙 저장소에서 로컬 저장소로 다운로드되는 JUnit 파일 인 Maven을 나타냅니다.
종속성 태그를 하나 더 만듭니다.
종속성 태그 내에 다음 정보를 제공하십시오.
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
바이너리를 확인합니다.
pom.xml이 성공적으로 편집되면 저장합니다.
프로젝트 → 정리로 이동-몇 분 정도 걸립니다.
Step 2 − 이름이 지정된 패키지 생성 dataTable 아래에 src/test/java
Step 3 − 기능 파일을 생성합니다.
다음과 같은 기능 파일을 생성합니다. dataTable패키지 dataTable 내부의 .feature (자세한 단계는 시나리오 개요 섹션 참조).
다음 텍스트를 작성하십시오.
Feature − 데이터 테이블
잘못된 입력을 전달한 후 새 사용자 등록이 실패했는지 확인하십시오.
Scenario:
새 사용자 등록 페이지에있는 경우
페이지에 잘못된 데이터를 입력 할 때
| Fields | Values |
| First Name | Tom |
| Last Name | Kenny |
| Email Address | [email protected] |
| Re-enter Email Address | [email protected] |
| Password | Password1 |
| Birthdate | 01 |
그러면 사용자 등록이 실패합니다.
파일을 저장하십시오.
Step 4 − 단계 정의 파일을 생성합니다.
패키지 dataTable 안에 'dataTable.java'라는 이름의 단계 정의 파일을 만듭니다 (자세한 단계는 시나리오 개요 섹션 참조).
다음 코드를 작성하십시오.
package dataTable;
import java.util.List;
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.support.ui.Select;
import cucumber.annotation.en.Given;
import cucumber.annotation.en.Then;
import cucumber.annotation.en.When;
import cucumber.table.DataTable;
public class stepdefinition {
WebDriver driver = null;
@Given("^I am on new user registration page$")
public void goToFacebook() {
//Intiate web browser instance. driver = new FirefoxDriver();
driver.navigate().to("https://www.facebook.com/");
}
@When("^I enter invalid data on the page$")
public void enterData(DataTable table){
//Initialize data table
List<list> data = table.raw();
System.out.println(data.get(1).get(1));
//Enter data
driver.findElement(By.name("firstname")).sendKeys(data.get(1).get(1));
driver.findElement(By.name("lastname")).sendKeys(data.get(2).get(1));
driver.findElement(By.name("reg_email__")).sendKeys(data.get(3).get(1));
driver.findElement(By.name("reg_email_confirmation__")).
sendKeys(data.get(4).get(1));
driver.findElement(By.name("reg_passwd__")).sendKeys(data.get(5).get(1));
Select dropdownB = new Select(driver.findElement(By.name("birthday_day")));
dropdownB.selectByValue("15");
Select dropdownM = new Select(driver.findElement(By.name("birthday_month")));
dropdownM.selectByValue("6");
Select dropdownY = new Select(driver.findElement(By.name("birthday_year")));
dropdownY.selectByValue("1990");
driver.findElement(By.className("_58mt")).click();
// Click submit button driver.findElement(By.name("websubmit")).click();
}
@Then("^User registration should be unsuccessful$")
public void User_registration_should_be_unsuccessful() {
if(driver.getCurrentUrl().equalsIgnoreCase("https://www.facebook.com/")){
System.out.println("Test Pass");
} else {
System.out.println("Test Failed");
}
driver.close();
}
}
파일을 저장하십시오.
Step 5 − 러너 클래스 파일을 생성합니다.
패키지 안에 runTest.java라는 이름의 러너 클래스를 만듭니다.
다음 코드를 작성하십시오.
package dataTable;
import org.junit.runner.RunWith;
import cucumber.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
public class runTest { }
파일을 저장하십시오.
옵션을 사용하여 테스트 실행
패키지 탐색기에서 runTest.java 파일을 선택하십시오.
마우스 오른쪽 버튼을 클릭하고 다음 계정으로 실행 옵션을 선택합니다.
JUnit 테스트를 선택하십시오.
성공적으로 실행되면 다음 사항을 관찰 할 수 있습니다.
Facebook 웹 사이트가로드됩니다.
등록 페이지에 데이터가 입력됩니다.
제출 버튼을 클릭합니다.
홈 페이지가 표시되지 않고 콘솔에 "Test Pass"가 기록되는 것을 볼 수 있습니다.