Uborka horgok

1. Bemutatkozás

Az uborkahorgok jól jöhetnek, ha minden forgatókönyvhöz vagy lépéshez konkrét műveleteket akarunk végrehajtani, de anélkül, hogy ezeket a műveleteket kifejezetten tartalmaznánk a Gherkin-kódban.

Ebben az oktatóanyagban megnézzük a @Előtt, @BeforeStep, @AfterStep, és @Utána Uborka kampók.

2. Az uborka horgainak áttekintése

2.1. Mikor kell horgot használni?

A horgokkal olyan háttérfeladatokat lehet végrehajtani, amelyek nem részei az üzleti funkcionalitásnak. Ilyen feladatok lehetnek:

  • Böngésző indítása
  • Cookie-k beállítása vagy törlése
  • Csatlakozás adatbázishoz
  • A rendszer állapotának ellenőrzése
  • Monitoring

A megfigyeléshez egy olyan irányítópult frissítése lenne, ha valós időben frissítenék a teszt előrehaladását.

A horgok nem láthatók a Gherkin-kódban. Ebből kifolyólag, nem szabad őket egy uborka háttér vagy egy adott lépés helyettesítésére tekintenünk.

Megtekintünk egy példát, ahol horgok segítségével készítünk képernyőképeket a teszt végrehajtása során.

2.2. Horgok hatóköre

A horgok minden forgatókönyvre hatással vannak. Ezért jó gyakorlat az összes kampó meghatározása egy dedikált konfigurációs osztályban.

Nem szükséges ugyanazokat a horgokat definiálni minden ragasztókódosztályban. Ha a horgokat ugyanabban az osztályban definiáljuk a ragasztókóddal, akkor kevésbé olvasható kódunk lenne.

3. Horgok

Először nézzük meg az egyes horgokat. Ezután megnézünk egy teljes példát, ahol megnézzük, hogyan működnek a horgok kombinálva.

3.1. @Előtt

A módszerrel annotált @Előtt akarat minden forgatókönyv előtt végrehajtani. Példánkban minden forgatókönyv előtt elindítjuk a böngészőt:

@A nyilvános void inicializálása előtt () {startBrowser (); }

Ha számos módszert annotálunk @Előtt, kifejezetten meghatározhatjuk a lépések végrehajtásának sorrendjét:

@Before (order = 2) public void beforeScenario () {takeScreenshot (); }

A fenti módszer másodsorban hajtja végre, ahogy elhaladunk 2 értékeként a rendelés paraméter az annotációhoz. Mi is átmehetünk 1 az inicializálási módszerünk rendelési paraméterének értékeként:

@Before (order = 1) public void inicializálás ()

Tehát, amikor egy forgatókönyvet hajtunk végre, inicializálás () végrehajtja először, és beforeScenario () végrehajtja a második.

3.2. @BeforeStep

A módszerrel annotált @BeforeStepvégrehajtani minden lépés előtt. Használjuk a kommentárokat képernyőkép készítéséhez minden lépés előtt:

@BeforeStep public void beforeStep () {takeScreenshot (); }

3.3. @AfterStep

A módszerrel annotált @AfterStepvégrehajtani minden lépés után:

@AfterStep public void afterStep () {takeScreenshot (); }

Használtuk @AfterStep itt minden képernyőkép után képernyőképet készíthet. Ez történik függetlenül attól, hogy a lépés sikeresen befejeződik vagy nem sikerül.

3.4. @Utána

A módszerrel annotált @Utánaminden forgatókönyv után végrehajtani:

@A nyilvános érvénytelen utánScenario () {takeScreenshot (); bezárBöngésző (); }

Példánkban elkészítünk egy utolsó képernyőképet, és bezárjuk a böngészőt. Ez történik függetlenül attól, hogy a forgatókönyv sikeresen befejeződik-e.

3.5. A Forgatókönyv Paraméter

A horog annotációval kommentált módszerek elfogadhatnak egy típusú paramétert Forgatókönyv:

@A nyilvános void beforeScenario (forgatókönyv forgatókönyv) után {// néhány kód}

A típus objektuma Forgatókönyv információkat tartalmaz az aktuális forgatókönyvről. Tartalmazza a forgatókönyv nevét, a lépések számát, a lépések nevét és állapotát (sikeres vagy sikertelen). Ez hasznos lehet, ha különböző műveleteket akarunk végrehajtani a sikeres és a sikertelen teszteknél.

4. Horog végrehajtása

4.1. Boldog áramlást

Most nézzük meg, mi történik, amikor egy uborka-forgatókönyvet futtatunk mind a négy típusú kampóval:

Jellemző: Könyvesbolt horgokkal Háttér: A könyvesbolt adott A következő könyvek kaphatók a boltban Az ördög a fehér városban Erik Larson | | Az oroszlán, a boszorkány és a szekrény | C.S. Lewis | | A Vadállatok Kertjében | Erik Larson | 1. szcenárió: Keresse meg a szerző könyvét, amikor Erik Larson könyvét kérem. Az eladó azt mondja, hogy 2 könyv van. Forgatókönyv: 2 - Keresse meg a szerző könyvét, de nincs, amikor könyvet kérek a szerző Marcel Proust Ezután az eladó azt mondja, hogy 0 könyv van

Az IntelliJ IDE tesztfuttatásának eredményét tekintve láthatjuk a végrehajtási sorrendet:

Először a kettőnk @Előtt kampók végrehajtani. Aztán minden lépés előtt és után a @BeforeStep és @AfterStep horgok futnak, ill. Végül a @Utána horog fut. Az összes kampó mindkét forgatókönyvre érvényes.

4.2. Boldogtalan áramlás: Egy lépés nem sikerül

Lássuk, mi történik, ha egy lépés nem sikerül. Amint az alábbi képernyőképen láthatjuk, mind a @Előtt és @Utána a sikertelen lépés kampóit végrehajtják. A következő lépéseket kihagyja, végül a @Utána horog végrehajtja:

- viselkedése @Utána hasonló a végül-záradék után próbáld elkapni Java-ban. Tisztítási feladatok elvégzésére használhatnánk, ha egy lépés nem sikerül. Példánkban akkor is készítünk képernyőképet, ha a forgatókönyv kudarcot vall.

4.3. Boldogtalan áramlás: A kampó nem sikerül

Nézzük meg, mi történik, ha maga a horog nem sikerül. Az alábbi példában az első @BeforeStep nem sikerül.

Ebben az esetben a tényleges lépés nem fut, de igen @AfterStep horog nem. A következő lépések sem futnak, míg a @Utána horogot hajtják végre a végén:

5. Feltételes végrehajtás címkékkel

A horgok globálisan vannak meghatározva, és minden forgatókönyvet és lépést érintenek. Az Uborka címkék segítségével azonban pontosan meghatározhatjuk, hogy melyik forgatókönyv esetén kell végrehajtani a horgot:

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

Ez a horog csak olyan szcenáriók esetén kerül végrehajtásra, amelyekkel fel van címkézve @Screenshots:

@Screenshots forgatókönyv: 1 - Keresse meg a szerző könyveit, amikor Erik Larson könyvét kérem, akkor az eladó azt mondja, hogy 2 könyv van

6. Java 8

Hozzáadhatjuk a Cucumber Java 8 támogatást, hogy meghatározzuk az összes kampót lambda kifejezésekkel.

Idézzük fel az inicializálási horogunkat a fenti példából:

@Before (order = 2) public void inicializálás () {startBrowser (); }

Lambda kifejezéssel átírva a következőket kapjuk:

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

Ugyanez működik a @BeforeStep, @Utána, és @AfterStep.

7. Következtetés

Ebben a cikkben megvizsgáltuk, hogyan lehet meghatározni az uborka horgokat.

Megbeszéltük, hogy mely esetekben kell használnunk őket, és mikor nem. Ezután láttuk, hogy a horgok milyen sorrendben hajtódnak végre, és hogyan érhetjük el a feltételes végrehajtást.

Végül láttuk, hogyan definiálhatjuk a horgokat Java 8 lambda jelöléssel.

Szokás szerint a cikk teljes forráskódja elérhető a GitHubon.


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