Mikä on Cucumber Ominaisuustiedoston ja vaiheen määritelmä? (Esimerkki)

⚡ Älykäs yhteenveto

Cucumber ominaisuustiedostot kuvaavat käyttäytymistä selkokielisellä Gherkin-kielellä, kun taas vaihemääritelmät sisältävät koodin, joka suorittaa jokaisen rivin. Cucumber Projekti tarvitsee molemmat, tallennettuna kiinteään kansioasetteluun ominaisuushakemiston alle.

  • 🔘 Kaksi tiedostoa: Ominaisuustiedosto kertoo, mitä pitäisi tapahtua; vaiheenmääritystiedosto kertoo, miten automaatio saa sen tapahtumaan.
  • ☑️ Kurkkuhakusanat: Ominaisuus, Skenaario, Given, When ja Then antavat skenaariolle sen rakenteen ja luettavassa muodossa olevan muodon.
  • Ei kaksoispisteitä portaissa: Feature ja Scenario ottavat kaksoispisteen, mutta Given, When ja Then eivät saa, tai vaihe jätetään huomiotta.
  • 🧪 Tietojoukot: Skenaarion pääpiirteet ja esimerkkitaulukko toistavat yhden skenaarion useiden syöterivien pohjalta.
  • 🛠️ Jaettu kokoonpano: Taustan nostot toistuvat Annetut vaiheet ulos jokaisesta skenaariosta ominaisuudessa.
  • 📊 Vastaavat: Cucumber jättää avainsanan huomiotta etsiessään vastaavuuksia, joten kahdella vaiheella ei välttämättä ole samaa tekstiä.

Cucumber ominaisuustiedosto ja vaiheen määritelmä selitettynä esimerkin avulla

Jokaisella Cucumber-projektilla on projektin juuressa yksi hakemisto nimeltä "features". Tämä on paikka, jossa kaikki Cucumber-ominaisuutesi sijaitsevat. Tästä hakemistosta löydät lisähakemistoja, jotka ovat step_definition ja support.

Tuolla asettelulla on merkitystä, koska Cucumber löytää tiedostosi tavanomaisen kokoonpanon eikä kokoonpanon perusteella. Ominaisuushakemiston ulkopuolella olevaa ominaisuustiedostoa ei yksinkertaisesti koskaan lueta.

Mikä on "ominaisuustiedosto"?

Ominaisuudet tiedosto sisältää korkean tason kuvauksen Testiskenaario yksinkertaisella kielellä. Se tunnetaan nimellä etikkakurkkuGherkin on selkokieli.

Cucumber Ominaisuustiedosto koostuu seuraavista osista —

  • Ominaisuus: Ominaisuus kuvaa nykyisen testikomentosarjan, joka on suoritettava.
  • skenaario: Skenaario kuvaa vaiheet ja odotetun tuloksen tietyssä testitapauksessa.
  • Skenaarion ääriviivat: Sama skenaario voidaan suorittaa useille tietosarjoille skenaarion hahmotelman avulla. Tiedot saadaan taulukkorakenteella, joka erotetaan merkillä (II).
  • Tietty: Se määrittää suoritettavan tekstin kontekstin. Käyttämällä datataulukoita “Given”, askel voidaan myös parametroida.
  • Kun: ”Milloin” määrittää suoritettavan testitoiminnon.
  • SittenTestin odotettu tulos voidaan esittää muodossa ”Sitten”.

Yhdessä tiedostossa on yksi ominaisuus. Sen alla olevat skenaariot ovat ominaisuutta havainnollistavia konkreettisia esimerkkejä, ja jokainen skenaario noudattaa samaa rytmiä: kuvaa lähtötilanne, kuvaa tapahtuma, kuvaa odotettu tulos.

Seuraavaksi opimme kirjoittamaan ominaisuustiedoston sisään Cucumber esimerkin kanssa.

Esimerkkiominaisuustiedoston esimerkki:

Tämän opetusohjelman mukana julkaistu alkuperäinen esimerkki on toistettu alla täsmälleen sellaisenaan.

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

⚠️ Korjaus: yllä olevassa esimerkissä kaksoispiste lisätään perään Tietty, Kun ja SittenKurkkuviipale laittaa kaksoispisteen sanan "Gherkin" jälkeen. Ominaisuus ja skenaario vain. Kaksoispisteen perässä olevaa step-avainsanaa ei jäsennetä step-avainsanaksi, joten Cucumber jättää rivin hiljaa huomiotta. Korjattu tiedosto kuuluu seuraavasti.

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

Jäsennin ei vaadi sisennystä, mutta kaksi välilyöntiä tasoa kohden on perinteinen tyyli ja tekee pitkien ominaisuuksien skannaamisesta paljon helpompaa. Alla oleva animaatio näyttää ominaisuustiedoston suorituksen ja jokaisen vaiheen muuttumisen vihreäksi sen kulkiessa.

Animaatio Cucumber ominaisuustiedosto suoritetaan ja jokainen Gherkin-vaihe raportoidaan vuorollaan

Mikä on "Step Definition"?

Vaihemäärittely kartoittaa ominaisuustiedostojen testitapausvaiheet (jotka esitteli Given/When/Then) koodiin. Se suorittaa testattavan sovelluksen vaiheet ja vertaa tuloksia odotettuihin tuloksiin. Jotta askelmäärittely voidaan suorittaa, sen on vastattava ominaisuuden annettua komponenttia. Vaiheen määritelmä määritellään rubiinitiedostoissa kohdassa "features/step_definitions/*_steps.rb".

Osuma tehdään pelkästään vaiheen tekstin perusteella. Cucumber ei ota avainsanaa huomioon etsiessään määritelmää, minkä vuoksi kaksi saman sarjan vaihetta eivät välttämättä koskaan sisällä identtistä tekstiä, vaikka toinen olisi Given ja toinen Then.

Esimerkki vaiheen määrittelystä: Tässä käytämme yllä olevaa Cucumber Ominaisuustiedoston esimerkki career.guru99.com-sivuston selaamisesta. Käytämme ominaisuuksia, kuten ”Kun, Sitten, Koska”, kuten alla on esitetty. Cucumber Esimerkkejä ominaisuustiedostoista.

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

⚠️ Huomautus kielistä: Yllä olevat määritelmät ovat Ruby, joka on Cucumber käynnistetty ja siksi kansio on nimetty step_definitions ja tiedostot päättyvät _steps.rbSama ominaisuustiedosto ohjaa vaihemääritelmiä, jotka on kirjoitettu Java, Javakäsikirjoitus, Python tai C# ilman yhtäkään muutosta Gherkin-komennossa. Cucumber-JVM:ssä säännöllinen lauseke siirtyy metodin annotaatioon:

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

Valitsetpa minkä kielen tahansa, vaiheen määrittely on ainoa paikka, johon toteutustiedot kuuluvat. Keepping ominaisuustiedostosta lähtevät selektorit ja HTTP-kutsut antavat ei-ohjelmoijalle mahdollisuuden lukea skenaarion. ensimmäinen Cucumber käsikirjoitus Läpikäynti rakentaa tämän parituksen päästä päähän.

Skenaarion pääpiirteet ja esimerkit ominaisuustiedostossa

Skenaarion kopioiminen kolme kertaa yhden arvon muuttamiseksi on yleisin tapa, jolla ominaisuustiedostosta tulee lukukelvoton. Skenaarion ääriviivat korvaa kopiot mallilla ja Esimerkit taulukko antaa arvot.

Parametrit kirjoitetaan kulmasulkeiden sisään ja niiden on vastattava niiden alla olevan taulukon sarakeotsikkoa. Cucumber korvaa arvot ennen vastaavan vaihemääritelmän etsimistä, joten itse määritelmät eivät tarvitse erityiskäsittelyä.

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  |

Muutamia asioita on syytä muistaa ääriviivoja käytettäessä:

  • Jäsennys suoritetaan kerran datariviä kohden. Ensimmäinen rivi on otsikko, eikä sitä koskaan suoriteta.
  • Skenaarion hahmotelman jälkeen on oltava vähintään yksi esimerkkiosio, muuten mitään ei suoriteta.
  • Taulukon putkien ei tarvitse olla linjassa, vaikka niiden kohdistaminen pitää tiedoston luettavana.
  • Pidä taulukko pienenä. Kolmenkymmenen rivin taulukko on yleensä merkki siitä, että tiedot kuuluvat johonkin tiettyyn paikkaan. datapohjainen testi sen sijaan.

Tausta, Ja, Mutta ja Muut Kurkku-Avainsanat

Aiemmin lueteltujen kuuden komponentin lisäksi Gherkinillä on kourallinen avainsanoja, jotka pitävät pidemmät ominaisuustiedostot luettavina.

  • Tausta — annettujen vaiheiden lohko, joka suoritetaan ennen jokaista skenaariota ominaisuudessa. Se poistaa saman esivaatimuksen kirjoittamisen toiston jokaisen skenaarion alkuun.
  • Ja ja Mutta — korvaavia tekijöitä toistuville Given-, When- tai Then-lauseille. Ne lukevat paremmin ja käyttäytyvät identtisesti; Cucumber vastaa vaihetekstiä kummassakin suunnassa.
  • Sääntö — valinnainen ryhmäping, joka lisättiin Gherkin 6:een ja joka kokoaa yhteen yhtä liiketoimintasääntöä havainnollistavat skenaariot.
  • Doc-merkkijonot — kolmella lainausmerkillä aidattu tekstilohko, joka välitetään vaihemääritelmälle yhtenä argumenttina, kun yksi rivi ei riitä.
  • Tietotaulukot — pystyviivalla erotetut rivit, jotka on liitetty yhteen vaiheeseen ja joita käytetään arvoluettelon luovuttamiseen kyseiselle vaiheelle.
  • Tunnisteet — ät-merkillä alkavat tunnisteet, jotka sijoitetaan ominaisuuden tai skenaarion yläpuolelle, jotta osajoukko voidaan valita suorituksen aikana.
  • Kommentit — rivi, joka alkaa hash-merkillä. Kommentit sallitaan vain rivin alussa, eikä Gherkinillä ole lohkokommentteja.

Yhteenvetona voidaan todeta, että jaetulla asetuksella varustettu ominaisuustiedosto näyttää tältä:

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

Yleisiä tiedostovirheitä ja niiden korjaaminen

bridge Cucumber Aloittelijoiden raportoimat ongelmat eivät ole kehysvirheitä. Ne ovat pieniä Gherkinin sääntöjen rikkomuksia, jotka epäonnistuvat hiljaa.

Virhe Mitä tapahtuu Korjata
Kaksoispiste Given, When tai Then jälkeen Riviä ei tunnisteta vaiheeksi ja se ohitetaan Käytä kaksoispistettä vain Feature- ja Scenario-osioiden jälkeen
Kaksi vaihetta, joissa on identtinen teksti Cucumber käsittelee niitä kaksoiskappaleina, koska avainsana jätetään huomiotta Muotoile yksi vaihe uudelleen niin, että ne lukevat eri tavalla
Ominaisuustiedosto ominaisuushakemiston ulkopuolella Tiedostoa ei koskaan löydetä eikä testiajoja suoriteta Pidä jokainen .feature tiedosto ominaisuuskansiossa
Viisitoista vaihetta yhdessä skenaariossa Skenaario lakkaa toimimasta dokumentaationa Pyri kolmesta viiteen vaiheeseen ja lisää yksityiskohtia vaiheen määritelmään
Sitten asettaa arvon tietokannan riville Testi läpäisee, vaikka käyttäjälle näkyvä toimintatapa on rikki Väite havaittavissa olevasta tulosteesta, kuten sivusta tai vastauksesta
Skenaarion hahmotelma ilman esimerkkitaulukkoa Mallipohjaa ei koskaan suoriteta Lisää esimerkkiosio suoraan jäsennyksen alle

Näiden korjaaminen ennen paketin kasvua on paljon halvempaa kuin jälkikäteen, koska jokainen sillä välin kirjoitettu skenaario kopioi saman muodon. Kun ominaisuustiedostot toimivat normaalisti, seuraava vaihe on projektin kytkeminen päälle – katso Cucumber asennus läpikäynti ja laajempi automaatiotestaus sarja.

UKK

Ei. .feature-tiedosto voi määrittää täsmälleen yhden ominaisuuden, vaikka se voi sisältää niin monta skenaariota kuin haluat. Jos tarvitset toisen ominaisuuden, luo toinen tiedosto – tämä rajoite pitää kansion navigoitavana pakkauksen kasvaessa.

Se ei tee niin. Gherkin on lokalisoitu yli seitsemällekymmenelle puhutulle kielelle. Kieliotsikon lisääminen tiedoston ensimmäiselle riville vaihtaa avainsanat, jotta tiimi voi kirjoittaa skenaarioita samalla kielellä, jota sen toimialueen asiantuntijat todellisuudessa puhuvat.

Se sisältää kaiken, mikä ei ole vaiheittaista määritelmää: ympäristön asetukset, selaimen kokoonpanon, skenaariota ennen tai jälkeen suoritettavat koukut ja jaetun apukoodin. Keepping se estää vaiheittaisten määritystiedostojen muuttumisen tyhmiksi tiedostoiksiping maahan.

Cucumber raportoi vaiheen määrittelemättömäksi epäonnistuneen sijaan ja tulostaa ehdotetun katkelman, jonka voit liittää vaiheen määritystiedostoon. Skenaario merkitään epäonnistuneeksi, joten määrittelemätöntä vaihetta ei koskaan lasketa hiljaisesti onnistuneeksi.

Ominaisuuden tai skenaarion yläpuolelle sijoitettu tägi antaa suorittajalle mahdollisuuden valita osajoukon suorituksen aikana kansiorakenteesta riippumatta. Tiimit yleensä tägäävät savujoukon, hitaan joukon ja keskeneräisen joukon ja suorittavat sitten vain sen, mitä tietty prosessin vaihe tarvitsee.

Suuret kielimallit luonnostavat Gherkinin hyväksymiskriteerin perusteella hyvin ja luovat vastaavat määritelmärunot vielä nopeammin. RevKatso tulosteesta päällekkäisiä vaihetekstejä ja skenaarioita, joista vuotaa toteutustietoja, missä Gherkinin luonti yleensä menee pieleen.

Hyvin. Avoimen ominaisuustiedoston perusteella Copilot päättelee määrittelemättömän vaiheen säännöllisen lausekkeen ja metodin allekirjoituksen ja täyttää rungon ympäröivästä koodista. Käsittele sitä ensimmäisenä luonnoksena; sen ehdottamat väitteet vaativat vielä ihmisen tarkistuksen.

Kyllä, ja se on suunnittelun idea. Määritelmät sijaitsevat jaetussa kansiossa ja ne yhdistetään tekstiin, eivät tiedostoihin, joten kerran kirjoitettua kirjautumisvaihetta voi käyttää uudelleen jokainen ominaisuus, joka sitä tarvitsee. Uudelleenkäyttö on syy siihen, miksi vaihetekstien kaksoiskappaleet ovat kiellettyjä.

Tiivistä tämä viesti seuraavasti: