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