- Cucumber 教程
- Cucumber - 首頁
- Cucumber - 概述
- Cucumber - 環境
- Cucumber - Gherkins
- Cucumber - 特性
- Cucumber - 場景
- Cucumber - 註解
- Cucumber - 場景大綱
- Cucumber - 標籤
- Cucumber - 資料表
- Cucumber - 註釋
- Cucumber - 鉤子
- Cucumber - 命令列選項
- Cucumber - JUnit 執行器
- Cucumber - 報告
- Cucumber - 除錯
- Cucumber - Java 測試
- Cucumber - Ruby 測試
- Cucumber 有用資源
- Cucumber - 快速指南
- Cucumber - 有用資源
- Cucumber - 討論
Cucumber - 場景大綱
場景大綱基本上用表格中的值替換變數/關鍵字。表格中的每一行都被視為一個場景。
讓我們繼續使用 Facebook 登入功能的相同示例。到目前為止,我們一直在執行一個場景:提供正確的使用者名稱後,登入成功。現在,假設我們想檢查對於所有三種可能的輸入型別(即使用者名稱、電子郵件地址或電話號碼),登入是否成功。為此,我們需要編寫三個不同的場景,其中每個場景都會因輸入型別而異,登入成功。在這種情況下,場景將如下所示。
場景
假設使用者導航到 Facebook
當輸入正確的使用者名稱和密碼時
則登入應成功
場景
假設使用者導航到 Facebook
當輸入正確的電子郵件地址和密碼時
則登入應成功
場景
假設使用者導航到 Facebook
當輸入正確的電話號碼和密碼時
則登入應成功
在這裡,如果我們仔細觀察,對於上述三個場景:語句相同,只有輸入引數(使用者名稱/電子郵件地址/電話號碼)在變化。這就是場景大綱的重要性所在。
當我們使用場景大綱定義任何場景時,我們可以指定一個測試場景,並在其底部提供多個輸入。該場景將根據提供的輸入數量執行多次。
示例
讓我們建立一個場景大綱的示例 -
步驟 1 - 建立一個名為 ScenarioOutlineTest 的 Maven 測試專案
轉到檔案 → 新建 → 其他 → Maven → Maven 專案 → 下一步。
提供 Group Id(Group Id 將唯一標識您的專案跨越所有專案)。
提供 Artifact Id(Artifact 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 下建立一個名為“outline”的包
步驟 3 - 建立一個名為 “outline.feature” 的特性檔案
選擇並右鍵單擊 outline 包。
點選“新建”檔案。
給檔案命名為 “outline.feature”
在檔案中寫入以下文字並儲存。
特性 - 場景大綱
場景大綱 - 社交網路網站的登入功能。
假設使用者導航到 Facebook
當輸入使用者名稱為“<username>”和密碼為“<password>”時
則登入應失敗
示例 -
| username | password | | username1 | password1 | | username2 | password2 |
注意 - 在這裡,示例註釋描述了在場景執行時要提供的輸入範圍。測試場景將針對提供的每個輸入執行。因此,在給定的示例中,測試場景將執行三次。
步驟 4 - 建立一個步驟定義檔案。
選擇並右鍵單擊 outline 包。
點選“新建”檔案。
將檔名命名為 stepdefinition.java
在檔案中寫入以下文字並儲存。
package Outline;
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 stepdefinition {
WebDriver driver = null;
@Given("^user navigates to facebook$")
public void goToFacebook() {
driver = new FirefoxDriver();
driver.navigate().to("https://#/");
}
@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://#/login.php?login_attempt=1&lwv=110")){
System.out.println("Test Pass");
} else {
System.out.println("Test Failed");
}
driver.close();
}
}
注意 - 在上面的程式碼中,我們必須定義一個具有兩個輸入引數的函式:一個用於使用者名稱,另一個用於密碼。因此,對於示例標籤中提供的每一組輸入,將執行一組 GIVEN、WHEN 和 THEN。
步驟 5 - 建立一個執行器類檔案。
選擇並右鍵單擊 outline 包。
點選“新建”檔案。
將檔名命名為 runTest.java
在檔案中寫入以下文字並儲存。
package Outline;
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 在一個新的 Firefox 瀏覽器例項中開啟。
Username1 和 password1 將作為輸入傳遞給使用者名稱和密碼欄位。
將點選登入。
瀏覽器上將顯示有關登入失敗的訊息。
在控制檯中,您將看到列印“測試透過”。
步驟結果 1 到 5 將針對 username2 和 password2 重新執行。
簡而言之,當場景不變但只有資料值發生變化時,建議使用場景大綱資料表。