- Cucumber 教程
- Cucumber - 首頁
- Cucumber - 概覽
- Cucumber - 環境
- Cucumber - Gherkins
- Cucumber - 特性
- Cucumber - 場景
- Cucumber - 註解
- Cucumber - 場景大綱
- Cucumber - 標籤
- Cucumber - 資料表
- Cucumber - 註釋
- Cucumber - Hook
- Cucumber - 命令列選項
- Cucumber - JUnit 執行器
- Cucumber - 報告
- Cucumber - 除錯
- Cucumber - Java 測試
- Cucumber - Ruby 測試
- Cucumber 有用資源
- Cucumber - 快速指南
- Cucumber - 有用資源
- Cucumber - 討論
Cucumber - 資料表
在進行自動化測試時,我們可能會遇到各種各樣的場景。每個場景都有不同的含義和需求。
從一開始,我們就一直在使用社交網路網站登入功能的例子,其中我們只需要傳遞兩個輸入引數。讓我們考慮更多可能性。如何處理“新使用者註冊”功能?通常,在為社交網路網站註冊新使用者時,輸入引數可能是什麼?類似於以下內容 -
- 使用者名稱
- 電子郵件地址
- 密碼
- 重新輸入密碼
- 出生日期
- 性別
- 電話號碼
特性 - 新使用者註冊。
驗證在傳遞錯誤輸入後,新使用者註冊是否不成功。
假設我在一個新使用者註冊頁面上。
當我輸入使用者名稱和電子郵件地址作為電子郵件地址,密碼為,重新輸入密碼為,出生日期為,性別為,電話號碼為時,使用者註冊應該不成功。
乍一看有點亂。那麼,有沒有更好的方法來管理這麼一大塊輸入?答案可以是“資料表”。資料表是一組要為單個標籤提供的輸入。此標籤可以是 GIVEN、WHEN 或 THEN。
讓我們藉助資料表編寫上述場景,它將如下所示 -
假設我在一個新使用者註冊頁面上
當我輸入有效資料到頁面上
| Fields | Values | | First Name | Tom | | Last Name | Kenny | | Email Address | someone@someone.com | | Re-enter Email Address | someone@someone.com | | Password | Password1 | | Birthdate | 01 |
那麼使用者註冊應該成功。
示例
讓我們自動化一個數據表的示例。
步驟 1 - 建立一個名為“DataTableTest”的 Maven 測試專案。
轉到檔案 -> 新建 -> 其他 -> Maven -> Maven 專案 -> 下一步。
提供組 ID(組 ID 將在所有專案中唯一標識您的專案)。
提供構件 ID(構件 ID 是不帶版本的 jar 的名稱。您可以選擇任何小寫名稱)。
點選完成。
開啟 pom.xml -
轉到 Eclipse 左側的包資源管理器。
展開 CucumberTest 專案。
找到 pom.xml 檔案。
右鍵單擊並選擇選項“使用文字編輯器開啟”。
新增 Selenium 的依賴項:這將指示 Maven 從中央儲存庫到本地儲存庫下載哪些 Selenium jar 檔案。
開啟 pom.xml 處於編輯模式,在專案標籤內建立依賴項標籤(<dependencies></dependencies>)。
在依賴項標籤內,建立依賴項標籤(<dependency></dependency>)。
在依賴項標籤內提供以下資訊。
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.47.1</version> </dependency>
新增 Cucumber-Java 的依賴項 - 這將指示 Maven 從中央儲存庫到本地儲存庫下載哪些 Cucumber 檔案。
再建立一個依賴項標籤。
在依賴項標籤內提供以下資訊。
<dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-java</artifactId> <version>1.0.2</version> <scope>test</scope> </dependency>
新增 Cucumber-JUnit 的依賴項 - 這將指示 Maven 從中央儲存庫到本地儲存庫下載哪些 Cucumber JUnit 檔案。
再建立一個依賴項標籤。
在依賴項標籤內提供以下資訊。
<dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-junit</artifactId> <version>1.0.2</version> <scope>test</scope> </dependency>
新增 JUnit 的依賴項 - 這將指示 Maven 從中央儲存庫到本地儲存庫下載哪些 JUnit 檔案。
再建立一個依賴項標籤。
在依賴項標籤內提供以下資訊
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency>
驗證二進位制檔案。
成功編輯 pom.xml 後,儲存它。
轉到專案 -> 清理 - 這需要幾分鐘。
步驟 2 - 在src/test/java下建立一個名為dataTable的包
步驟 3 - 建立一個特性檔案。
建立一個名為dataTable.feature 的特性檔案,放在 dataTable 包中(有關更詳細的步驟,請參閱場景大綱部分)。
寫入以下文字。
特性 - 資料表
驗證在傳遞錯誤輸入後,新使用者註冊是否不成功。
場景
假設我在新使用者註冊頁面上
當我輸入無效資料到頁面上
| Fields | Values | | First Name | Tom | | Last Name | Kenny | | Email Address | someone@someone.com | | Re-enter Email Address | someone@someone.com | | Password | Password1 | | Birthdate | 01 |
那麼使用者註冊應該不成功
儲存檔案。
步驟 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://#/");
}
@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://#/")){
System.out.println("Test Pass");
} else {
System.out.println("Test Failed");
}
driver.close();
}
}
儲存檔案。
步驟 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 網站載入。
資料將輸入到註冊頁面。
提交按鈕將被點選。
我們將看到主頁不會顯示,並且控制檯上會顯示“測試透過”。