Mis on Cucumber Funktsioonifaili ja sammu määratlus? (Näide)
⚡ Nutikas kokkuvõte
Cucumber Funktsioonifailid kirjeldavad käitumist lihtsas keeles Gherkin, samas kui sammudefinitsioonid sisaldavad koodi, mis käivitab iga rea. Cucumber Projekt vajab mõlemat, salvestatuna fikseeritud kaustapaigutusega funktsioonide kataloogi all.
Iga Cucumberi projekti jaoks on projekti juurkataloogis üks kataloog nimega „features“. See on koht, kus asuvad kõik teie Cucumberi funktsioonid. Sellest kataloogist leiate lisakataloogid, milleks on step_definition ja support.
See paigutus on oluline, sest Cucumber tuvastab teie failid kokkuleppeliselt, mitte konfiguratsiooni järgi. Funktsioonifaili, mis asub väljaspool funktsioonide kataloogi, lihtsalt ei loeta kunagi.
Mis on "funktsioonide fail"?
Funktsioonide fail sisaldab kõrgetasemelist kirjeldust Testi stsenaarium lihtsas keeles. Seda tuntakse kui KornišonGherkin on lihtsas inglise keeles teksti kirjutav keel.
Cucumber Funktsioonifail koosneb järgmistest komponentidest —
- tunnusjoon: Funktsioon kirjeldab praegust testskripti, mis tuleb käivitada.
- Stsenaarium: stsenaarium kirjeldab konkreetse testjuhtumi etappe ja eeldatavat tulemust.
- Stsenaariumi ülevaade: sama stsenaariumi saab käivitada mitme andmekomplekti jaoks, kasutades stsenaariumi ülevaadet. Andmed esitatakse tabelistruktuuriga, mis on eraldatud (II).
- antud: see määrab täidetava teksti konteksti. Kasutades andmetabeleid “Antud”, saab sammu ka parameetristada.
- Kui„Millal” määrab testitoimingu, mis tuleb sooritada.
- SiisTesti oodatavat tulemust saab esitada sõnaga „Siis“.
Üks fail sisaldab ühte omadust. Selle all olevad stsenaariumid on konkreetsed näited, mis illustreerivad seda omadust, ja iga stsenaarium järgib sama rütmi: kirjeldage algkonteksti, kirjeldage sündmust, kirjeldage oodatavat tulemust.
Järgmisena õpime, kuidas funktsioonifaili sisse kirjutada Cucumber eeskujuga.
Funktsioonifaili näidisnäide:
Selle õpetusega koos avaldatud algne näide on allpool täpselt nii reprodutseeritud.
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
⚠️ Parandus: ülaltoodud näites pannakse koolon pärast antud, Kui ja SiisKurk paneb pärast sõna "kurk" kooloni. tunnusjoon ja Stsenaarium ainult. Märksõna „step”, millele järgneb koolon, ei parsitata sammuna, seega Cucumber ignoreerib rida vaikselt. Parandatud fail on järgmine.
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
Parser ei nõua taanet, kuid kaks tühikut taseme kohta on tavapärane stiil ja muudab pikkade objektide skannimise palju lihtsamaks. Allolev animatsioon näitab objektifaili käivitamist ja iga sammu läbimist roheliseks muutumist.
Mis on "Sammu definitsioon"?
Sammude definitsioon kaardistab funktsioonifailides olevad testjuhtumi etapid (sissejuhatus Antud/Millal/Siis) koodiga. See viib läbi testitava rakenduse etapid ja võrdleb tulemusi oodatud tulemustega. Sammumääratluse täitmiseks peab see vastama funktsiooni antud komponendile. Sammude määratlus on määratletud rubiinfailides jaotises „features/step_definitions/*_steps.rb”.
Vaste leitakse ainuüksi sammu teksti põhjal. Cucumber ei võta definitsiooni otsimisel märksõna arvesse, mistõttu ei pruugi sama komplekti kaks sammu kunagi sisaldada identset teksti, isegi kui üks on Given ja teine Then.
Sammu määratluse näide: Siin kasutame ülaltoodud Cucumber Funktsioonifaili näide career.guru99.com sirvimisest. Kasutame funktsioone nagu „Millal, Siis, Arvestades“, nagu allpool näidatud. Cucumber Funktsioonifailide näited.
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
⚠️ Märkus keelte kohta: Ülaltoodud definitsioonid on Ruby, mis on koht, kus Cucumber käivitatud ja seepärast on kausta nimi step_definitions ja failid lõpevad _steps.rbSama funktsioonifail juhib etapiviisilisi definitsioone, mis on kirjutatud keeles Java, Javaskript, Python või C# ilma ühegi muudatuseta Gherkinis. Cucumber-JVM-is liigub regulaaravaldis meetodi annotatsiooni:
@Given("I am on career.guru99.com") public void i_am_on_the_career_page() { driver.get("http://career.guru99.com"); }
Olenemata sellest, millise keele valite, on etapi definitsioon ainus koht, kuhu rakenduse üksikasjad kuuluvad. Keepping Funktsioonifailist välja tulevad selektorid ja HTTP-päringud võimaldavad mitteprogrammeerijal stsenaariumi lugeda. esimene Cucumber käsikiri Läbikäik loob selle sidumise otsast lõpuni.
Stsenaariumi ülevaade ja näited funktsioonifailis
Stsenaariumi kolm korda kopeerimine ühe väärtuse muutmiseks on kõige levinum viis, miks funktsioonifail loetamatuks muutub. Stsenaariumi ülevaade asendab koopiad malliga ja Näited tabel annab väärtused.
Parameetrid kirjutatakse nurksulgudes ja peavad vastama nende all oleva tabeli veerupäisele. Cucumber asendab väärtused enne sobiva sammudefinitsiooni otsimist, seega definitsioonid ise ei vaja eraldi käsitlemist.
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 |
Kontuuride kasutamisel tasub meeles pidada mõnda punkti:
- Liigendus käivitatakse iga andmerea kohta üks kord. Esimene rida on päis ja seda ei käivitata kunagi.
- Stsenaariumi ülevaatele peab järgnema vähemalt üks näidete jaotis, vastasel juhul midagi ei toimu.
- Tabeli torud ei pea olema joondatud, kuigi nende joondamine hoiab faili loetavana.
- Hoia tabel väikesena. Kolmekümne reaga tabel on tavaliselt märk sellest, et andmed kuuluvad kuhugi. andmepõhine test asemel.
Taust, Ja, Aga ja muud kurgi märksõnad
Lisaks kuuele eelnevalt loetletud komponendile on Gherkinil käputäis märksõnu, mis hoiavad pikemad funktsioonifailid loetavana.
- Taust — antud sammude plokk, mis käivitub enne iga funktsiooni stsenaariumi. See kõrvaldab sama eeltingimuse kirjutamise kordumise iga stsenaariumi algusesse.
- And ja Kuid — korduvate „Given”, „When” või „Then” asendused. Need loevad paremini ja käituvad identselt; Cucumber sobib sammu tekstiga mõlemal juhul.
- Eeskiri — valikuline rühmping, mis lisati versioonis Gherkin 6 ja mis kogub ühte ärireeglit illustreerivaid stsenaariume.
- Dokumendi stringid — kolme jutumärgiga piiratud tekstiblokk, mis edastatakse sammu definitsioonile ühe argumendina, kui ühest reast ei piisa.
- Andmetabelid — ühe sammu külge kinnitatud püstkriipsudega eraldatud read, mida kasutatakse sellele sammule väärtuste loendi edastamiseks.
- Sildid — sildid, mis algavad märgiga „at” ja paigutatakse funktsiooni või stsenaariumi kohale, et alamhulka saaks käitusajal valida.
- Kommentaarid — rida, mis algab räsimärgiga. Kommentaarid on lubatud ainult rea alguses ja Gherkinil pole plokkkommentaare.
Kokkuvõttes näeb jagatud seadistusega funktsioonifail välja selline:
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
Levinumad funktsioonifailide vead ja kuidas neid parandada
sild Cucumber Algajate teatatud probleemid ei ole raamistiku vead. Need on Gherkini reeglite väikesed rikkumised, mis märkamatult ebaõnnestuvad.
| Viga | Mis juhtub | Määrama |
|---|---|---|
| Koolon pärast Given'i, When'i või Then'i | Rida ei tuvastata sammuna ja see jäetakse vahele | Kasutage koolonit ainult pärast omadusi ja stsenaariume |
| Kaks sammu identse tekstiga | Cucumber käsitleb neid duplikaatidena, kuna märksõna ignoreeritakse | Sõnasta üks samm ümber, et kaks oleksid erinevalt loetavad |
| Funktsioonifail väljaspool funktsioonide kataloogi | Faili ei avastata kunagi ja teste ei käivitata | Hoidke iga .feature fail funktsioonide kausta all |
| Viisteist sammu ühes stsenaariumis | Stsenaarium lakkab dokumentatsioonina töötamast. | Püüdke saavutada kolm kuni viis sammu ja lisage sammude definitsioonile detaile |
| Seejärel esitab kinnituse andmebaasi real | Test läbib, kuid kasutajale nähtav käitumine on katki | Väide jälgitava väljundi, näiteks lehe või vastuse põhjal |
| Stsenaariumi ülevaade ilma näidete tabelita | Mall ei käivitu kunagi | Lisa näidete jaotis otse kontuuri alla |
Nende parandamine enne komplekti kasvamist on palju odavam kui pärast, sest iga vahepeal kirjutatud stsenaarium kopeerib sama kuju. Kui funktsioonifailid toimivad, on järgmine samm projekti ühendamine – vaata Cucumber paigaldamine läbikäik ja laiem automaatika testimine seeria.

