Mi a Cucumber Funkciófájl és lépés meghatározása? (Példa)

⚡ Okos összefoglaló

Cucumber A funkciófájlok egyszerű nyelven, Gherkin nyelven írják le a viselkedést, míg a lépésdefiníciók az egyes sorokat futtató kódot tartalmazzák. Cucumber A projektnek mindkettőre szüksége van, fix mappaelrendezésben, egy jellemzőkönyvtár alatt tárolva.

  • 🔘 Két fájl: Egy jellemzőfájl meghatározza, hogy minek kell történnie; egy lépésdefiníciós fájl meghatározza, hogy az automatizálás hogyan valósítja meg ezt.
  • ☑️ Uborka kulcsszavak: A Feature, Scenario, Given, When és Then a forgatókönyv szerkezetét és olvasható alakját adják meg.
  • Nincsenek kettőspontok a lépcsőkön: A Feature és a Scenario mezőkhöz kettőspont tartozik, de a Given, When és Then mezőkhöz nem, különben a lépés figyelmen kívül marad.
  • 🧪 Adatkészletek: A forgatókönyv vázlata és egy példatábla egy forgatókönyvet játsszon le több bemeneti sor alapján.
  • 🇧🇷 Megosztott beállítás: Háttérfelvonók ismétlődnek. Adott lépések minden forgatókönyvből egy funkcióban.
  • 📊 Megfelelő: Cucumber figyelmen kívül hagyja a kulcsszót az egyeztetés során, így két lépésben soha nem fordulhat elő ugyanaz a szöveg.

Cucumber jellemzőfájl és lépésdefiníció magyarázata egy példával

Minden Cucumber projekthez tartozik egy „features” nevű könyvtár a projekt gyökerében. Itt található az összes Cucumber funkció. Ebben a könyvtárban további könyvtárakat találsz, a step_definition és a support könyvtárakat.

Az elrendezés azért fontos, mert Cucumber A fájljaidat a konfiguráció helyett konvenciók alapján ismeri fel. A features könyvtáron kívül található feature fájlokat egyszerűen soha nem olvassa be.

Mi az a „Feature File”?

A funkciók fájl magas szintű leírást tartalmaz a Teszt forgatókönyv egyszerű nyelven. Úgy ismert, mint Ecetes uborkaA Gherkin egy egyszerű angol szövegszerkesztő nyelv.

Cucumber A funkciófájl a következő összetevőkből áll —

  • Jellemző: Egy szolgáltatás az aktuális tesztszkriptet írja le, amelyet végre kell hajtani.
  • Forgatókönyv: A forgatókönyv egy adott teszteset lépéseit és várható eredményét írja le.
  • Forgatókönyv vázlata: Ugyanaz a forgatókönyv több adathalmazra is végrehajtható a forgatókönyvvázlat segítségével. Az adatokat a (II)-vel elválasztott táblázatos szerkezet szolgáltatja.
  • Adott: Megadja a végrehajtandó szöveg kontextusát. A „Given” adattáblázat használatával lépés is paraméterezhető.
  • AmikorA „Mikor” paraméter határozza meg a végrehajtandó tesztműveletet.
  • MajdA teszt várható eredményét az „Akkor” kifejezéssel lehet ábrázolni.

Egy fájl egy Jellemzőt tartalmaz. Az alatta lévő forgatókönyvek a jellemzőt illusztráló konkrét példák, és minden forgatókönyv ugyanazt a ritmust követi: leír egy kiindulási kontextust, leír egy eseményt, leírja a várható eredményt.

Ezután megtanuljuk, hogyan kell beírni a szolgáltatásfájlt Cucumber példával.

Minta funkciófájl példa:

Az ebben az oktatóanyagban közzétett eredeti példa az alábbiakban pontosan úgy szerepel, ahogyan meg van írva.

Feature: Visit career guide page in career.guru99.com
Scenario: Visit career.guru99.com
Given: I am on career.guru99.com
When: I click on career guide menu
Then: I should see career guide page

⚠️ Javítás: a fenti példa kettőspontot helyez el a Adott, Amikor és a MajdUborka kettőspontot tesz a következő után: Jellemző és a Forgatókönyv csak. Egy kettősponttal követett step kulcsszó nem elemzi a rendszer a kulcsszót lépésként, így Cucumber csendben figyelmen kívül hagyja a sort. A javított fájl a következőképpen szól.

Feature: Visit career guide page in career.guru99.com

  Scenario: Visit career.guru99.com
    Given I am on career.guru99.com
    When I click on career guide menu
    Then I should see career guide page

Az elemző nem követeli meg a behúzást, de a szintenkénti két szóköz a hagyományos stílus, és sokkal könnyebbé teszi a hosszú elemek beolvasását. Az alábbi animáció egy elemfájl futtatását mutatja, és minden lépés zöldre vált.

Animáció egy Cucumber a jellemzőfájl fut, minden Gherkin-lépést egymás után jelentve

Mi az a „Lépésdefiníció”?

A lépésdefiníció leképezi a teszteset lépéseit a szolgáltatásfájlokban (amelyeket az Adott/Mikor/Akkor vezet be) kódra. Ez végrehajtja a Teszt alatti alkalmazás lépéseit, és összeveti az eredményeket a várt eredményekkel. A lépésdefiníció végrehajtásához meg kell egyeznie a jellemzőben lévő adott összetevővel. A lépés definíciója ruby ​​fájlokban van megadva a „features/step_definitions/*_steps.rb” alatt.

A találatot kizárólag a lépés szövege alapján kell elvégezni. Cucumber nem veszi figyelembe a kulcsszót, amikor definíciót keres, ezért előfordulhat, hogy két lépés ugyanabban a lépéscsomagban soha nem tartalmaz azonos szöveget, még akkor sem, ha az egyik egy Given, a másik pedig egy Then.

Példa a lépések meghatározására: Itt a fentieket fogjuk használni Cucumber Példa a career.guru99.com böngészésének jellemzőfájljára. Olyan jellemzőket fogunk használni, mint a „Mikor”, „Akkor”, „Adott”, az alábbiak szerint. Cucumber Példák jellemző fájlokra.

Step 1:

Given (/^ I am on career.guru99.com$/) do

Browser.goto "http://career.guru99.com" -This will visit career.guru99 on browser

end

Step 2:
When (/^ click on career guide menu$/) do

Browser.text (:name, " career guide" ).click – This will click "career guide menu"

end

Step 3:

Then (/^ I should see career guide page$/) do

Browser.goto "http://career.guru99.com/category/career-guide/" - It will visit "career guide page"

end

⚠️ Megjegyzés a nyelvekről: A fenti definíciók Ruby-ban vannak, ami ott van, ahol Cucumber elindult, és ezért kapta a mappa nevét step_definitions és a fájlok végződnek _steps.rbUgyanaz a jellemzőfájl hajtja végre a következőben írt lépésdefiníciókat: Java, JavaForgatókönyv, Python vagy C#-ban a Gherkin egyetlen változtatása nélkül. Cucumber-JVM A reguláris kifejezés egy metódus annotációjába kerül:

@Given("I am on career.guru99.com")
public void i_am_on_the_career_page() {
    driver.get("http://career.guru99.com");
}

Bármelyik nyelvet is választod, a lépésdefiníció az egyetlen hely, ahová a megvalósítási részletek tartoznak. Keepping A szelektorok és a HTTP-hívások a funkciófájlból teszik lehetővé egy nem programozó számára a forgatókönyv olvasását. első Cucumber forgatókönyv A végigjátszás ezt a párosítást a végponttól a végéig építi fel.

Forgatókönyvvázlat és példák egy jellemzőfájlban

Egy forgatókönyv háromszori másolása egyetlen érték módosításához a leggyakoribb módja annak, hogy egy funkciófájl olvashatatlanná váljon. Forgatókönyv vázlata a másolatokat egy sablonnal helyettesíti, és egy Példák A táblázat adja meg az értékeket.

A paraméterek csúcsos zárójelben vannak írva, és meg kell egyezniük az alattuk lévő táblázat oszlopfejlécével. Cucumber behelyettesíti az értékeket, mielőtt egyező lépésdefiníciót keresne, így maguk a definíciók nem igényelnek speciális kezelést.

Scenario Outline: Search the career guide
  Given I am on career.guru99.com
  When I search for "<keyword>"
  Then I should see the <section> section

  Examples:
    | keyword   | section       |
    | interview | Interview Tips|
    | resume    | Resume Guide  |

Néhány szempontot érdemes megjegyezni a vázlatok használatakor:

  • A vázlat adatsoronként egyszer fut le. Az első sor a fejléc, és soha nem kerül végrehajtásra.
  • A forgatókönyv vázlatát legalább egy példa szakasznak kell követnie, különben semmi sem fut le.
  • A táblázat pipe-jainak nem kell egy vonalban lenniük, bár az igazításuk biztosítja a fájl olvashatóságát.
  • Tartsa a táblázatot kicsiben. Egy harminc soros táblázat általában annak a jele, hogy az adatok egy adott táblázatba tartoznak. adatvezérelt teszt helyette.

Háttér, És, De és a többi uborka kulcsszavak

A korábban felsorolt ​​hat összetevőn túl Gherkinnek van egy maroknyi kulcsszava, amelyek segítenek a hosszabb jellemzőfájlok olvashatóságában.

  • Háttér — egy adott lépésekből álló blokk, amely a funkció minden forgatókönyve előtt lefut. Eltávolítja az ugyanazon előfeltétel ismétlődését minden forgatókönyv tetején.
  • És és a De — az ismétlődő Given, When vagy Then helyett szolgáló helyettesítők. Jobban olvashatók és azonosan viselkednek; Cucumber mindkét irányban egyezik a lépés szövegével.
  • Szabály — opcionális csoportping, amelyet a Gherkin 6-ban adtak hozzá, és amely egy üzleti szabályt illusztráló forgatókönyveket gyűjt össze.
  • Dokumentációs karakterláncok — három dupla idézőjellel elválasztott szövegblokk, amelyet egyetlen argumentumként adunk át a lépésdefiníciónak, ha egy sor nem elég.
  • Adattáblák — egyetlen lépéshez csatolt, függőleges vonallal elválasztott sorok, amelyekkel értékek listáját lehet átadni az adott lépésnek.
  • Címkék — kukac jellel kezdődő címkék, amelyeket egy Jellemző vagy Forgatókönyv fölé helyeznek, hogy futásidőben egy részhalmaz választható legyen.
  • Hozzászólások — egy sor, amely kettőskereszttel kezdődik. Megjegyzések csak a sor elején engedélyezettek, és a Gherkinnek nincsenek blokkos megjegyzései.

Összefoglalva, egy megosztott beállításokkal rendelkező funkciófájl így néz ki:

Feature: Career guide navigation

  Background:
    Given I am on career.guru99.com

  Scenario: Open the career guide menu
    Given I am signed in
    And my profile is complete
    When I click on career guide menu
    Then I should see career guide page
    But I should not see the admin panel

Gyakori fájlhibák és azok javítása

híd Cucumber A kezdők által jelentett problémák nem keretrendszeri hibák, hanem a Gherkin-szabályok apró, csendben kudarcot valló megsértései.

Hiba Mi történik, Rögzít
Kettőspont a Given, When vagy Then után A sort a rendszer nem ismeri fel lépésként, és kihagyja. Csak a Feature és a Scenario után használjon kettőspontot
Két lépés azonos szöveggel Cucumber duplikátumként kezeli őket, mivel a kulcsszó figyelmen kívül marad Fogalmazd át az egyik lépést úgy, hogy a kettő másképp hangozzon
A funkciók könyvtárán kívüli funkciófájl A fájlt soha nem fedezik fel, és nem futnak tesztek. Tartsa meg minden .feature fájl a funkciók mappában
Tizenöt lépés egyetlen forgatókönyvben A forgatókönyv nem működik dokumentációként Törekedj három-öt lépésre, és a lépésdefinícióba építsd be a részleteket
Ezután egy adatbázis soron állítja be A teszt sikeres, miközben a felhasználó által látható viselkedés sérült Megfigyelhető kimenetre, például oldalra vagy válaszra vonatkozó állítás
Forgatókönyvvázlat példatábla nélkül A sablon soha nem fut le Adjon hozzá egy Példák szakaszt közvetlenül a vázlat alá

Ezeknek a csomag bővítése előtti javítása sokkal olcsóbb, mint utólagos javításuk, mivel minden időközben írt forgatókönyv ugyanazt az alakzatot másolja. Miután a jellemzőfájlok működnek, a következő lépés a projekt bekötése – lásd a Cucumber telepítés átvezető és a szélesebb automatizálási tesztelés sorozat.

GYIK

Nem. Egy .feature fájl pontosan egy funkciót deklarálhat, bár annyi forgatókönyvet tartalmazhat, amennyit csak szeretnél. Ha egy második funkcióra is szükséged van, hozz létre egy második fájlt – ez a korlátozás teszi lehetővé, hogy a mappa navigálható legyen a csomag bővülése során.

Nem. A Gherkin több mint hetven beszélt nyelvre van lokalizálva. A fájl első sorához hozzáadott nyelvi fejléc felcseréli a kulcsszavakat, így a csapat ugyanazon a nyelven írhat forgatókönyveket, amelyet a szakterületük szakértői valójában beszélnek.

Mindent tartalmaz, ami nem lépésdefiníció: környezeti beállítások, böngésző konfiguráció, forgatókönyv előtt vagy után futó hookok és megosztott segédkód. Keepping Ez a különálló funkció megakadályozza, hogy a lépésdefiníciós fájlok üressé váljanak.ping talaj.

Cucumber A lépést sikertelenként, és nem sikertelenként jelenti, és kinyomtat egy javasolt részletet, amelyet beilleszthet egy lépésdefiníciós fájlba. A forgatókönyv sikertelenként van megjelölve, így egy meghatározatlan lépés soha nem számít csendben sikeresnek.

Egy Jellemző vagy Forgatókönyv fölé helyezett címke lehetővé teszi a futtató számára, hogy végrehajtás közben kiválasszon egy részhalmazt, függetlenül a mappastruktúrától. A csapatok általában egy füsthalmazt, egy lassú halmazt és egy folyamatban lévő halmazt címkéznek meg, majd csak azt futtatják, amire egy adott folyamatszakasznak szüksége van.

A nagy nyelvi modellek jól definiálják a Gherkint egy elfogadási kritérium alapján, és még gyorsabban generálják a megfelelő definíciós vázakat. RevTekintse meg a kimenetet a duplikált lépésszövegek és a megvalósítási részleteket kiszivárogtató forgatókönyvek esetén, ahol a létrehozott Gherkin általában hibásan működik.

Nagyon. Egy nyitott jellemzőfájl esetén a Copilot kikövetkezteti a reguláris kifejezést és a metódus szignatúráját egy meghatározatlan lépéshez, és a környező kódból kitölti a törzset. Tekintsük első vázlatként; az általa javasolt állítások továbbra is emberi ellenőrzést igényelnek.

Igen, és ez a tervezés lényege. A definíciók egy megosztott mappában találhatók, és szöveg, nem fájl alapján illeszkednek hozzájuk, így egy egyszer megírt bejelentkezési lépést minden olyan funkció újra felhasznál, amelynek szüksége van rá. Az újrafelhasználás az oka annak, hogy a lépésszöveg ismétlődése tilos.

Foglald össze ezt a bejegyzést a következőképpen: