Što je Cucumber Datoteka značajki i definicija koraka? (Primjer)

⚡ Pametni sažetak

Cucumber Datoteke značajki opisuju ponašanje u običnom Gherkinu, dok definicije koraka sadrže kod koji izvršava svaki redak. Cucumber Projektu je potrebno oboje, pohranjeno u fiksnom rasporedu mapa ispod direktorija features.

  • 🔘 Dvije datoteke: Datoteka značajki navodi što bi se trebalo dogoditi; datoteka definicije koraka navodi kako automatizacija to omogućuje.
  • ☑️ Ključne riječi za kisele krastavce: Značajka, Scenarij, Dano, Kada i Zatim daju scenariju njegovu strukturu i čitljiv oblik.
  • Bez dvotočaka na koracima: Argumenti Feature i Scenario uzimaju dvotočku, ali Argumenti Given, When i Then ne smiju, inače se korak zanemaruje.
  • 🧪 Skupovi podataka: Pregled scenarija plus tablica s primjerima ponavlja jedan scenarij u odnosu na više redaka ulaza.
  • 🛠️ Dijeljeno postavljanje: Ponavljanje podizanja pozadine Dani koraci iz svakog scenarija u značajki.
  • 📊 podudaranje: Cucumber zanemaruje ključnu riječ prilikom podudaranja, tako da dva koraka možda nikada neće dijeliti isti tekst.

Cucumber Datoteka značajki i definicija koraka objašnjeni s primjerom

Za svaki projekt cucumbera postoji jedan direktorij u korijenu projekta pod nazivom „features“. Ovdje će se nalaziti sve vaše značajke cucumbera. U ovom direktoriju pronaći ćete dodatne direktorije, a to su direktoriji step_definition i support.

Taj raspored je važan, jer Cucumber otkriva vaše datoteke po konvenciji, a ne po konfiguraciji. Datoteka značajki koja se nalazi izvan direktorija značajki jednostavno se nikada ne čita.

Što je "Fature File"?

Datoteka značajki sadrži opis visoke razine Testni scenarij jednostavnim jezikom. Poznat je kao GherkinGherkin je običan engleski tekstualni jezik.

Cucumber Datoteka značajki sastoji se od sljedećih komponenti —

  • svojstvo: Značajka bi opisala trenutnu testnu skriptu koja se mora izvršiti.
  • scenario: Scenarij opisuje korake i očekivani ishod za određeni testni slučaj.
  • Nacrt scenarija: Isti scenarij može se izvršiti za višestruke skupove podataka pomoću nacrta scenarija. Podaci su prikazani tabelarnom strukturom odvojenom (II).
  • S obzirom: Određuje kontekst teksta koji će se izvršiti. Korištenjem podatkovnih tablica "Dano", korak se također može parametrizirati.
  • Kada: „Kada“ određuje testnu radnju koja se mora izvršiti.
  • TadaOčekivani ishod testa može se predstaviti kao „Zatim“.

Jedna datoteka sadrži jednu značajku. Scenariji ispod nje su konkretni primjeri koji ilustriraju značajku, a svaki scenarij slijedi isti ritam: opišite početni kontekst, opišite događaj, opišite očekivani rezultat.

Zatim ćemo naučiti kako napisati Feature File Cucumber s primjerom.

Primjer datoteke sa značajkama:

Izvorni primjer objavljen uz ovaj tutorijal reproduciran je u nastavku točno onako kako je napisan.

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

⚠️ Ispravak: U gornjem primjeru dvotočka se stavlja iza S obzirom, Kada i TadaGherkin stavlja dvotočku nakon svojstvo i scenario samo. Ključna riječ korak iza koje slijedi dvotočka ne parsira se kao korak, stoga Cucumber tiho ignorira redak. Ispravljena datoteka glasi kako slijedi.

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

Uvlačenje nije potrebno parseru, ali dva razmaka po razini su konvencionalni stil i znatno olakšavaju skeniranje dugih značajki. Animacija u nastavku prikazuje datoteku značajki koja se izvršava i svaki korak postaje zelen dok prolazi.

Animacija Cucumber datoteka značajki koja se izvodi sa svakim Gherkin korakom koji se redom prijavljuje

Što je "Definicija koraka"?

Definicija koraka preslikava korake testnog slučaja u datotekama značajki (koje uvodi Given/When/Then) u kod. Ona izvršava korake na aplikaciji koja se testira i provjerava rezultate u odnosu na očekivane rezultate. Da bi se definicija koraka izvršila, ona mora odgovarati danoj komponenti u značajci. Definicija koraka definirana je u ruby ​​datotekama pod “features/step_definitions/*_steps.rb”.

Podudaranje se vrši samo na temelju teksta koraka. Cucumber ne uzima u obzir ključnu riječ kada traži definiciju, zbog čega dva koraka u istom paketu nikada ne moraju sadržavati identičan tekst čak i ako je jedan Dano, a drugi Zatim.

Primjer za definiciju koraka: Ovdje ćemo koristiti gore Cucumber Primjer datoteke značajki pregledavanja career.guru99.com. Koristit ćemo značajke poput „Kada, Tada, Dano“ kao što je prikazano u nastavku Cucumber Primjeri datoteke značajki.

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

⚠️ Napomena o jezicima: Gornje definicije su Ruby, gdje Cucumber pokrenuto i zato je mapa dobila ime step_definitions i datoteke završavaju s _steps.rbIsta datoteka značajki pokreće definicije koraka napisane u Java, Javaskripta, Python ili C# bez ijedne promjene na Gherkinu. U Cucumber-JVM regularni izraz se premješta u anotaciju na metodi:

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

Koji god jezik odabrali, definicija koraka je jedino mjesto gdje pripadaju detalji implementacije.ping Selektori i HTTP pozivi iz datoteke značajki ono je što omogućuje neprogrameru da pročita scenarij. prvi Cucumber rukopis Prolaz gradi ovo uparivanje od početka do kraja.

Pregled scenarija i primjeri u datoteci značajki

Kopiranje scenarija tri puta radi promjene jedne vrijednosti najčešći je način na koji datoteka značajki postaje nečitljiva. Nacrt scenarija zamjenjuje kopije predloškom i Primjeri tablica daje vrijednosti.

Parametri se pišu unutar kutnih zagrada i moraju odgovarati naslovu stupca u tablici ispod njih. Cucumber zamjenjuje vrijednosti prije nego što potraži odgovarajuću definiciju koraka, tako da same definicije ne zahtijevaju posebnu obradu.

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  |

Prilikom korištenja skica vrijedi zapamtiti nekoliko točaka:

  • Struktura se izvršava jednom po retku podataka. Prvi redak je zaglavlje i nikada se ne izvršava.
  • Nakon pregleda scenarija mora slijediti barem jedan odjeljak s primjerima, inače se ništa neće pokrenuti.
  • Cijevi tablice ne moraju biti poravnate, iako njihovo poravnavanje omogućuje čitljivost datoteke.
  • Neka tablica bude mala. Tablica s trideset redaka obično je znak da podaci pripadaju test temeljen na podacima umjesto.

Pozadina, I, Ali i ostale ključne riječi o kiselim krastavcima

Osim šest ranije navedenih komponenti, Gherkin ima nekoliko ključnih riječi koje čine dulje datoteke značajki čitljivima.

  • pozadina — blok zadanih koraka koji se izvršava prije svakog scenarija u značajki. Uklanja ponavljanje pisanja istog preduvjeta na vrhu svakog scenarija.
  • I i Ali — zamjene za ponovljene Dano, Kada ili Zatim. Bolje se čitaju i ponašaju identično; Cucumber podudaranja u tekstu koraka u oba smjera.
  • Pravilo — opcionalna grupaping, dodano u Gherkinu 6, koje prikuplja scenarije koji ilustriraju jedno poslovno pravilo.
  • Dokumentacijski nizovi — blok teksta ograđen s tri dvostruka navodnika, prosljeđuje se definiciji koraka kao jedan argument kada jedan redak nije dovoljan.
  • Tablice podataka — retci odvojeni uspravnom crtom pridruženi jednom koraku, koji se koriste za predaju popisa vrijednosti tom koraku.
  • Tagovi — oznake koje počinju znakom at, postavljene iznad značajke ili scenarija tako da se podskup može odabrati tijekom izvođenja.
  • Komentari — redak koji počinje s hashom. Komentari su dopušteni samo na početku retka, a Gherkin nema blokovni komentar.

Skupljena, datoteka značajki s dijeljenim postavkama izgleda ovako:

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

Uobičajene pogreške u datotekama značajki i kako ih ispraviti

most Cucumber Problemi koje prijavljuju početnici nisu greške u frameworku. To su mala kršenja Gherkinovih pravila koja tiho propadaju.

Pogreška Što se događa Popraviti
Dvotočka nakon Dano, Kada ili Tada Redak se ne prepoznaje kao korak i preskače se Koristite dvotočku samo nakon Značajke i Scenarija
Dva koraka s identičnim tekstom Cucumber tretira ih kao duplikate jer se ključna riječ zanemaruje Preformulirajte jedan korak tako da se oba čitaju drugačije
Datoteka značajki izvan direktorija značajki Datoteka se nikada ne otkriva i ne izvršava se testiranje. Čuvajte svaki .feature datoteka u mapi features
Petnaest koraka u jednom scenariju Scenarij prestaje funkcionirati kao dokumentacija Ciljajte na tri do pet koraka i uključite detalje u definiciju koraka
Zatim se asertira na retku baze podataka Test prolazi iako je ponašanje vidljivo korisniku narušeno. Tvrdnja na temelju vidljivog izlaza kao što je stranica ili odgovor
Pregled scenarija bez tablice s primjerima Predložak se nikad ne izvršava Dodajte odjeljak s primjerima neposredno ispod nacrta

Popravljanje ovih problema prije nego što paket naraste puno je jeftinije nego naknadno, jer svaki scenarij napisan u međuvremenu kopira isti oblik. Nakon što se datoteke značajki ponašaju, sljedeći korak je povezivanje projekta - pogledajte Cucumber instalacija šetnja i šire ispitivanje automatizacije Serija.

Pitanja i odgovori

Ne. Datoteka .feature može deklarirati točno jednu značajku, iako može sadržavati onoliko scenarija koliko želite. Ako vam je potrebna druga značajka, stvorite drugu datoteku - to ograničenje omogućuje navigaciju mapom kako paket raste.

Ne radi to. Gherkin je lokaliziran na više od sedamdeset govornih jezika. Dodavanje jezičnog zaglavlja u prvi redak datoteke mijenja ključne riječi, tako da tim može pisati scenarije na istom jeziku kojim zapravo govore njegovi stručnjaci u domeni.

Sadrži sve što nije definicija koraka: postavke okruženja, konfiguraciju preglednika, hooks-ove koji se izvode prije ili nakon scenarija i dijeljeni pomoćni kod. Keeping To odvajanje sprječava da datoteke s definicijom koraka postanu lažneping tlo.

Cucumber prijavljuje korak kao nedefiniran, a ne neuspješan, i ispisuje predloženi isječak koji možete zalijepiti u datoteku definicije koraka. Scenarij je označen kao neprolazni, pa se nedefinirani korak nikada ne računa tiho kao uspjeh.

Oznaka postavljena iznad značajke ili scenarija omogućuje izvršavatelju odabir podskupa u vrijeme izvršavanja, neovisno o strukturi mape. Timovi obično označavaju skup za dim, spori skup i skup u tijeku, a zatim pokreću samo ono što je potrebno određenoj fazi cjevovoda.

Veliki jezični modeli izrađuju Gherkin iz bunara kriterija prihvaćanja i još brže generiraju kosture odgovarajućih definicija. RevPogledajte izlaz za duplicirani tekst koraka i za scenarije koji propuštaju detalje implementacije, što je mjesto gdje generirani Gherkin obično krene po zlu.

Vrlo. S obzirom na otvorenu datoteku značajki, Copilot zaključuje regularni izraz i potpis metode za nedefinirani korak i popunjava tijelo iz okolnog koda. Tretira ga kao prvi nacrt; tvrdnje koje predlaže još uvijek trebaju ljudsku provjeru.

Da, i to je poanta dizajna. Definicije se nalaze u dijeljenoj mapi i podudaraju se s tekstom, a ne s datotekom, tako da se korak prijave napisan jednom ponovno koristi od strane svake značajke kojoj je potreban. Ponovna upotreba je razlog zašto je duplicirani tekst koraka zabranjen.

Sažmite ovu objavu uz: