แตงกวา - Tags
มันดูเรียบง่ายเมื่อเรามีหนึ่งสองหรืออาจจะห้าสถานการณ์ในไฟล์ฟีเจอร์ อย่างไรก็ตามในชีวิตจริงมันไม่ได้เกิดขึ้น สำหรับแต่ละคุณลักษณะที่อยู่ระหว่างการทดสอบเราอาจมี 10, 20 หรืออาจมากกว่าจำนวนสถานการณ์ในไฟล์คุณลักษณะเดียว ซึ่งอาจแสดงถึงวัตถุประสงค์ที่แตกต่างกัน (การทดสอบควัน / การทดสอบการถดถอย) ผู้มุ่งหวังที่แตกต่างกัน (ผู้พัฒนา / QA / BA) สถานะที่แตกต่างกัน (พร้อมสำหรับการดำเนินการ / กำลังดำเนินการ) ฯลฯ จะจัดการการดำเนินการสำหรับมวลดังกล่าวอย่างไร
สำหรับสิ่งนี้ Cucumber ได้จัดเตรียมวิธีการจัดระเบียบการดำเนินการสถานการณ์ของคุณโดยใช้แท็กในไฟล์ฟีเจอร์ เราสามารถกำหนดแต่ละสถานการณ์ด้วยแท็กที่มีประโยชน์ ต่อมาในไฟล์นักวิ่งเราสามารถตัดสินใจได้ว่าแท็กใด (และเป็นไปตามสถานการณ์) ที่เราต้องการให้ Cucumber ดำเนินการ แท็กเริ่มต้นด้วย“ @” หลังจาก“ @” คุณสามารถมีข้อความที่เกี่ยวข้องเพื่อกำหนดแท็กของคุณ มาทำความเข้าใจกับตัวอย่างนี้
สมมติว่ามีสองสถานการณ์ขึ้นไปในไฟล์ฟีเจอร์ เราต้องการดำเนินการเพียงสถานการณ์เดียวโดยเป็นส่วนหนึ่งของการทดสอบควัน ดังนั้นสิ่งแรกคือการระบุสถานการณ์นั้นและประการที่สองคือการติดแท็กด้วยข้อความ“ @SmokeTest” ที่จุดเริ่มต้นของสถานการณ์ มาดูรายละเอียดกัน -
Step 1 - สร้างโครงการ Maven ชื่อ cucumberTag.
Step 2- สร้างแพ็คเกจชื่อ cucumberTag ภายใต้ src/test/java
Step 3- สร้างไฟล์คุณสมบัติชื่อ cucumberTag.feature.
เขียนข้อความต่อไปนี้ภายในไฟล์และบันทึก ไฟล์ฟีเจอร์นี้มีสองสถานการณ์ที่มีเพียงสถานการณ์เดียวเท่านั้นที่ถูกทำเครื่องหมายเป็นไฟล์SmokeTest แท็ก
Feature - แท็กแตงกวา
Scenario Outline - เข้าสู่ระบบสำหรับเว็บไซต์เครือข่ายสังคม
กำหนดให้ผู้ใช้ไปที่ Facebook
เมื่อฉันป้อนชื่อผู้ใช้เป็น "<username>" และรหัสผ่านเป็น "<password>"
จากนั้นการเข้าสู่ระบบจะไม่สำเร็จ
ตัวอย่าง
| username | password |
| username1 | password1 |
| username2 | password2 |
# สถานการณ์ต่อไปนี้ถูกแท็กเป็น SmokeTest และสิ่งนี้ควรได้รับการดำเนินการ @SmokeTest
Scenario:
กำหนดให้ผู้ใช้ไปที่ Facebook
เมื่อฉันป้อนชื่อผู้ใช้เป็น "<>" และรหัสผ่านเป็น "<>"
จากนั้นควรเปลี่ยนเส้นทางผู้ใช้เพื่อเข้าสู่ระบบลองใหม่
Step 4 - สร้างไฟล์นิยามขั้นตอน
เลือกและคลิกขวาที่โครงร่างแพ็คเกจ
คลิกที่ไฟล์ 'New'
ตั้งชื่อไฟล์เช่น cucumberTag.java
เขียนข้อความต่อไปนี้ภายในไฟล์และบันทึก
package cucumberTag;
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 cucumberTag {
WebDriver driver = null;
@Given("^user navigates to facebook$")
public void goToFacebook() {
driver = new FirefoxDriver();
driver.navigate().to("https://www.facebook.com/");
}
@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://www.facebook.com/login.php?login_attempt=1&lwv=110")){
System.out.println("Test Pass");
} else {
System.out.println("Test Failed");
}
driver.close();
}
@Then("^User should be redirected to login retry$")
public void loginRetry() {
if(driver.getCurrentUrl().equalsIgnoreCase(
"https://www.facebook.com/login.php?login_attempt=1&lwv=110")){
System.out.println("Test Pass");
} else {
System.out.println("Test Failed");
}
driver.close();
}
}
Step 5 - สร้างไฟล์คลาสนักวิ่ง
สร้างคลาสนักวิ่งชื่อ runTest.java ภายในบรรจุภัณฑ์
เขียนรหัสต่อไปนี้
บันทึกไฟล์
package cucumberTag;
import org.junit.runner.RunWith;
import cucumber.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
public class runTest { }
เรียกใช้ตัวเลือกการทดสอบ
คลิกขวาและเลือกตัวเลือก ‘Run as’.
เลือก JUnit test
คุณจะสังเกตสิ่งต่อไปนี้เมื่อคุณเรียกใช้ไฟล์คลาสนี้
Facebook เปิดในอินสแตนซ์เว็บเบราว์เซอร์ Firefox ใหม่
จะไม่มีการระบุค่าให้กับฟิลด์ชื่อผู้ใช้และรหัสผ่าน
เข้าสู่ระบบจะคลิก
หน้าลองเข้าสู่ระบบอีกครั้งจะถูกโหลด
ไม่มีขีด จำกัด ในการกำหนดแท็กภายในไฟล์ฟีเจอร์ ตามความต้องการของคุณคุณสามารถได้รับแท็กที่จะใช้และสถานการณ์ที่จะดำเนินการ
ส่วนใหญ่มีแท็กสองประเภท -
Default tag- แท็กเริ่มต้นมีความหมายที่กำหนดไว้ล่วงหน้า ตัวอย่าง @ Dev, @ ละเว้น
Custom tag - แท็กที่กำหนดเองช่วยให้คุณมีความยืดหยุ่นเต็มที่ในการเลือกข้อความที่เหมาะสมสำหรับการกำหนดแท็กของคุณ
นอกจากนี้ยังสามารถกำหนดแท็กในระดับคุณลักษณะ เมื่อคุณกำหนดแท็กที่ระดับคุณลักษณะแล้วจะทำให้แน่ใจได้ว่าสถานการณ์ทั้งหมดภายในไฟล์คุณลักษณะนั้นจะสืบทอดแท็กนั้น ขึ้นอยู่กับลักษณะของสถานการณ์เราสามารถใช้มากกว่าหนึ่งแท็กสำหรับคุณลักษณะเดียว เมื่อใดก็ตามที่แตงกวาพบการโทรที่เหมาะสมสถานการณ์เฉพาะเจาะจงจะถูกดำเนินการ
แตงกวายังมีวิธีในการผกผันการเลือกแท็ก พิจารณาว่าจากสถานการณ์ที่กำหนดไว้ 25 สถานการณ์ 10 รายการถูกทำเครื่องหมายว่าเป็นการทดสอบควัน เราจำเป็นต้องดำเนินการเฉพาะสถานการณ์ทดสอบการถดถอย
สำหรับสิ่งนี้เราสามารถใช้“ ~” ในคลาส JUnit runner เพื่อยกเว้นสถานการณ์ทดสอบควัน จะมีลักษณะดังต่อไปนี้
@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}, tags = {"~@SmokeTest"})
public class runTest { }
ในขณะที่กำหนดหลายแท็กเรายังสามารถกำหนดตรรกะหรือ / และตรรกะและการดำเนินการได้
การกำหนดตรรกะหรือในคลาสรองชนะเลิศ - @dev,@wip - มันบอกว่าต้องดำเนินการสถานการณ์ที่ตรงกับแท็กนี้
การกำหนดตรรกะหรือในคลาสรองชนะเลิศ - [@dev,~@wip] − มันบอกว่าต้องดำเนินการสถานการณ์ที่ตรงกับแท็กทั้งสองนี้