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 網站載入。

  • 資料將輸入到註冊頁面。

  • 提交按鈕將被點選。

  • 我們將看到主頁不會顯示,並且控制檯上會顯示“測試透過”。

廣告

© . All rights reserved.