แตงกวา - 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] − มันบอกว่าต้องดำเนินการสถานการณ์ที่ตรงกับแท็กทั้งสองนี้