แตงกวา - ตารางข้อมูล

ในขณะที่ทำงานกับระบบอัตโนมัติเราอาจเผชิญกับสถานการณ์ต่างๆ แต่ละสถานการณ์มีความหมายและความต้องการที่แตกต่างกัน

ตั้งแต่เริ่มต้นเราได้นำตัวอย่างของฟังก์ชันการเข้าสู่ระบบสำหรับไซต์เครือข่ายสังคมออนไลน์ซึ่งเรามีพารามิเตอร์อินพุตสองตัวที่จะส่งผ่าน ลองคิดถึงความเป็นไปได้เพิ่มเติม แล้วฟังก์ชัน“ การลงทะเบียนผู้ใช้ใหม่” ล่ะ โดยปกติพารามิเตอร์อินพุตสามารถเป็นอะไรได้บ้างในขณะที่ลงทะเบียนผู้ใช้ใหม่สำหรับไซต์เครือข่ายสังคม สิ่งต่อไปนี้ -

  • ชื่อผู้ใช้
  • ที่อยู่อีเมล
  • Password
  • ป้อนรหัสผ่านอีกครั้ง
  • Birthdate
  • Gender
  • หมายเลขโทรศัพท์

Feature - การลงทะเบียนผู้ใช้ใหม่

ตรวจสอบว่าการลงทะเบียนผู้ใช้ใหม่ไม่สำเร็จหลังจากส่งอินพุตที่ไม่ถูกต้อง

เนื่องจากฉันอยู่ในหน้าลงทะเบียนผู้ใช้ใหม่

เมื่อฉันป้อนชื่อผู้ใช้และที่อยู่อีเมลเป็นที่อยู่อีเมลและรหัสผ่านและป้อนรหัสผ่านอีกครั้งเป็นและวันเกิดเป็นและเพศเป็นและหมายเลขโทรศัพท์เนื่องจากการลงทะเบียนผู้ใช้จะไม่สำเร็จ

มันดูยุ่งเล็กน้อยในตอนแรก ดังนั้นจะมีวิธีใดที่ดีกว่าในการจัดการปัจจัยการผลิตดังกล่าวหรือไม่? คำตอบอาจเป็น "ตารางข้อมูล" ตารางข้อมูลคือชุดของอินพุตที่จะจัดเตรียมไว้สำหรับแท็กเดียว แท็กนี้สามารถเป็น GIVEN เมื่อไหร่หรือแล้วก็ได้

ลองเขียนสถานการณ์ข้างต้นด้วยความช่วยเหลือของตารางข้อมูลและจะมีลักษณะดังต่อไปนี้ -

เนื่องจากฉันอยู่ในหน้าลงทะเบียนผู้ใช้ใหม่

เมื่อฉันป้อนข้อมูลที่ถูกต้องบนหน้า

| Fields                 | Values              |
| First Name             | Tom                 |
| Last Name              | Kenny               |
| Email Address          | [email protected] |
| Re-enter Email Address | [email protected] |
| Password               | Password1           |
| Birthdate              | 01                  |

จากนั้นการลงทะเบียนผู้ใช้ควรจะสำเร็จ

ตัวอย่าง

มาทำตัวอย่างตารางข้อมูลโดยอัตโนมัติ

Step 1 - สร้างโครงการทดสอบ Maven ชื่อ“ DataTableTest”

  • ไปที่ไฟล์→ใหม่→อื่น ๆ → Maven → Maven Project →ถัดไป

  • ให้ group Id (รหัสกลุ่มจะระบุโครงการของคุณโดยไม่ซ้ำกันในทุกโครงการ)

  • ให้ artifact Id (รหัสวัตถุคือชื่อของ jar ที่ไม่มีเวอร์ชันคุณสามารถเลือกชื่อใดก็ได้ที่เป็นตัวพิมพ์เล็ก)

  • คลิกที่ Finish

  • เปิด pom.xml -

    • ไปที่ package explorer ทางซ้ายมือของ 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 สำเร็จแล้วให้บันทึก

    • ไปที่ Project → Clean - จะใช้เวลาสักครู่

Step 2 - สร้างแพ็คเกจชื่อ dataTable ภายใต้ src/test/java

Step 3 - สร้างไฟล์ฟีเจอร์

  • สร้างไฟล์ฟีเจอร์ชื่อ dataTable.feature ภายในแพ็คเกจ dataTable (ดูโครงร่างสถานการณ์ส่วนสำหรับขั้นตอนโดยละเอียดเพิ่มเติม)

  • เขียนข้อความต่อไปนี้

    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.java' ภายในแพ็คเกจ dataTable (ดูโครงร่างสถานการณ์ส่วนสำหรับขั้นตอนโดยละเอียดเพิ่มเติม)

  • เขียนรหัสต่อไปนี้

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 จาก package explorer

    • คลิกขวาและเลือกตัวเลือก Run as

    • เลือก JUnit test

คุณอาจสังเกตสิ่งต่อไปนี้เมื่อดำเนินการสำเร็จ

  • เว็บไซต์ Facebook ถูกโหลด

  • ข้อมูลจะถูกป้อนในหน้าลงทะเบียน

  • ปุ่มส่งจะถูกคลิก

  • เราจะเห็นว่าโฮมเพจจะไม่ปรากฏขึ้นและ“ Test Pass” จะถูกเขียนบนคอนโซล