Š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.
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.
Š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.

