Háčiky na uhorku

1. Úvod

Háčiky na uhorku sa môžu hodiť, keď chceme vykonať konkrétne akcie pre každý scenár alebo krok, ale bez toho, aby sme tieto akcie mali výslovne v Gherkinovom kóde.

V tomto výučbe sa pozrieme na @ Predtým, @BeforeStep, @AfterStep, a @ Potom Háčiky na uhorku.

2. Prehľad háčikov v uhorke

2.1. Kedy by sa mali použiť háčiky?

Háky je možné použiť na vykonávanie úloh na pozadí, ktoré nie sú súčasťou obchodnej funkčnosti. Môžu to byť tieto úlohy:

  • Spustenie prehľadávača
  • Nastavenie alebo vymazanie súborov cookie
  • Pripojenie k databáze
  • Kontrola stavu systému
  • Monitorovanie

Prípadom použitia na monitorovanie by bola aktualizácia informačného panela s pokrokom v reálnom čase.

Háky nie sú v Gherkinovom kóde viditeľné. Preto nemali by sme ich vnímať ako náhradu za Uhorkové pozadie alebo daný krok.

Pozrime sa na príklad, keď pomocou hákov robíme snímky obrazovky počas vykonávania testu.

2.2. Rozsah háčikov

Háčiky ovplyvňujú každý scenár. Preto je dobrým zvykom definovať všetky háky v vyhradenej triede konfigurácie.

Nie je potrebné definovať rovnaké háčiky v každej triede kódu lepidla. Keby sme definovali háky v tej istej triede pomocou nášho kódu lepidla, mali by sme menej čitateľný kód.

3. Háčiky

Najprv sa pozrime na jednotlivé háčiky. Potom sa pozrieme na celý príklad, kde uvidíme, ako sa háky vykonajú, keď sa skombinujú.

3.1. @ Predtým

Metódy anotované pomocou @ Predtým bude vykonať pred každým scenárom. V našom príklade spustíme prehliadač pred každým scenárom:

@ Pred public void initialization () {startBrowser (); }

Ak anotujeme niekoľko metód pomocou @ Predtým, môžeme explicitne definovať poradie, v akom sa kroky vykonávajú:

@ Pred (objednávka = 2) public void beforeScenario () {takeSc Screenshot (); }

Vyššie uvedená metóda sa vykoná druhá, keď prechádzame 2 ako hodnota pre objednať parameter do anotácie. Môžeme aj prejsť 1 ako hodnota parametra objednávky našej metódy inicializácie:

@ Pred (objednávka = 1) inicializácia verejnej neplatnosti ()

Takže keď vykonáme scenár, inicializácia () vykoná ako prvý a beforeScenario () vykoná druhý.

3.2. @BeforeStep

Metódy anotované pomocou @BeforeStepvykonať pred každým krokom. Použijme anotáciu a pred každým krokom urobme snímku obrazovky:

@BeforeStep public void beforeStep () {takeSc Screenshot (); }

3.3. @AfterStep

Metódy anotované pomocou @AfterStepvykonať po každom kroku:

@AfterStep public void afterStep () {takeSc Screenshot (); }

Použili sme @AfterStep tu a po každom kroku urobíte snímku obrazovky. Toto sa stáva bez ohľadu na to, či sa krok úspešne dokončí alebo zlyhá.

3.4. @ Potom

Metódy anotované pomocou @ Potomvykonať po každom scenári:

@After public void afterScenario () {takeSc Screenshot (); closeBrowser (); }

V našom príklade urobíme posledný screenshot a zavrieme prehliadač. Toto sa stáva bez ohľadu na to, či sa scenár úspešne dokončí.

3.5. The Scenár Parameter

Metódy anotované anotáciou s háčikom môžu prijať parameter typu Scenár:

@After public void beforeScenario (scenárový scenár) {// nejaký kód}

Objekt typu Scenár obsahuje informácie o aktuálnom scenári. Zahrnuté sú názov scenára, počet krokov, názvy krokov a stav (úspešne alebo úspešne). To môže byť užitočné, ak chceme vykonať rôzne akcie pre úspešné a neúspešné testy.

4. Vykonanie háku

4.1. Šťastný tok

Pozrime sa teraz na to, čo sa stane, keď spustíme scenár Okurka so všetkými štyrmi typmi háčikov:

Funkcia: Kníhkupectvo s háčikmi Pozadie: Kníhkupectvo dané V obchode sú k dispozícii nasledujúce knihy | Diabol v Bielom meste Erik Larson | | Lev, čarodejnica a šatník C.S. Lewis | | V záhrade zvierat Erik Larson | Scenár: 1 - Nájsť knihy od autora Keď požiadam o knihu od autora Erik Larson Potom Predajca hovorí, že existujú 2 knihy Scenár: 2 - Nájsť knihy od autora, ale nie je tam Keď žiadam knihu od autor Marcel Proust Potom Predajca hovorí, že je 0 kníh

Pri pohľade na výsledok testovacej prevádzky v IntelliJ IDE môžeme vidieť príkaz na vykonanie:

Najprv naši dvaja @ Predtým háčiky vykonať. Pred a po každom kroku potom @BeforeStep a @AfterStep háčiky bežia, resp. Nakoniec @ Potom háčik beží. Všetky háky sa vykonajú pre oba scenáre.

4.2. Nešťastný priebeh: krok zlyhá

Pozrime sa, čo sa stane, ak krok zlyhá. Ako vidíme na obrázku nižšie, obe @ Predtým a @ Potom sú vykonané háky zlyhávajúceho kroku. Nasledujúce kroky sú vynechané a nakoniec @ Potom hák vykoná:

Správanie @ Potom je podobný ako konečne klauzula po Skús chytiť v Jave. Ak by niektorý krok zlyhal, mohli by sme ho použiť na čistenie. V našom príklade urobíme snímku obrazovky, aj keď scenár zlyhá.

4.3. Nešťastný tok: zlyhanie háku

Pozrime sa, čo sa stane, keď zlyhá samotný háčik. V príklade nižšie prvý @BeforeStep zlyháva.

V takom prípade skutočný krok nefunguje, ale je @AfterStep háčik robí. Nespustia sa ani ďalšie kroky, zatiaľ čo @ Potom hák sa vykoná na konci:

5. Podmienečné vykonanie so značkami

Háky sú definované globálne a ovplyvňujú všetky scenáre a kroky. Pomocou značiek Cucumber však môžeme presne definovať, pre ktoré scenáre sa má háčik vykonať:

@Before (order = 2, value = "@ Screenshots") public void beforeScenario () {takeSc Screenshot (); }

Tento háčik sa vykoná iba pre scenáre, ktoré sú označené @ Screenshoty:

@Sc Screenshots Scenár: 1 - Nájsť knihy od autora Keď požiadam o knihu od autora Erik Larson Potom Predajca hovorí, že existujú 2 knihy

6. Java 8

Môžeme pridať podporu Cucumber Java 8, ktorá definuje všetky háčiky s výrazmi lambda.

Pripomeňme si náš inicializačný hák z vyššie uvedeného príkladu:

@ Pred (objednávka = 2) public void initialization () {startBrowser (); }

Prepísané výrazom lambda dostaneme:

public BookStoreWithHooksRunSteps () {Before (2, () -> startBrowser ()); }

To isté platí aj pre @BeforeStep, @ Potom, a @AfterStep.

7. Záver

V tomto článku sme sa pozreli na to, ako definovať háčiky uhorky.

Diskutovali sme o tom, v ktorých prípadoch by sme ich mali použiť a kedy nie. Potom sme videli, v akom poradí sa háky vykonávajú a ako môžeme dosiahnuť podmienené vykonanie.

Nakoniec sme videli, ako môžeme definovať háky pomocou lambda notácie Java 8.

Úplný zdrojový kód tohto článku je ako obvykle k dispozícii na serveri GitHub.


$config[zx-auto] not found$config[zx-overlay] not found