facebook-pixel

Tesztadatok YAML-ben

Robot Framework tippek-trükkök sorozat

A sorozatról

A Robot Framework (RF) egy nagyszerű tesztautomatizáló keretrendszer, mi nagyon kedveljük, mert sokoldalú és szerintünk felveszi a versenyt a drága eszközökkel is. A cikksorozat nem csak azoknak szól, akik ezt használják tesztautomatizálásra, hanem mindenkinek, aki nap, mint nap szembesül a tesztautomatizálásban rejlő nehézségekkel.  A gyakorlati részeket RF-ben mutatjuk be, de ezek is érthetőek lesznek annyira, hogy más eszközre is könnyen át lehessen ültetni. 

Tesztadatok tesztautomatizálásnál

Sok helyen a tesztadatok-on csak azokat az adatokat értik, amik a tesztlépések során valamilyen bemeneti értékek. A tesztautomatizálásnál érdemes nagyobb halmazra gondolni, amikor tesztadatokról beszélünk:

  • konfigurációs értékek (böngésző, operációs rendszer, tesztrendszer elérhetősége, kapcsolódási adatok…)
  • tesztlépések bemeneti értékei
  • elvárt eredmény értékek
  • objektumok neve (pl.: terminál neve, fül title, input mező neve, link szövege, kép neve, ….)
  • objektumok elérési leírása (pl.: xpath, css locator, objektum id, objektum tulajdonságok, …)
  • menet közben megtalált objektumok aktuális tulajdonság értékei (pl.: szín, típus, számított érték, input mező aktuális értéke, aktív/inaktív, …)

Tesztautomatizálás esetében mindig a tervezés része a tesztadatok tárolási módjának a megszervezése. (Nagyon sok tervezési feladat van, ami a tesztadatokkal kapcsolatos, de most csak erről lesz szó.)

Tesztadatok tárolása

A Robot Framework nagyon rugalmas eszköz. Bármilyen tárolási módokat is választunk, azt (egyéb fejlesztés nélkül is) támogatja.

  • Adatbázis
  • Excel, CSV
  • JSON
  • XML
  • Változók
  • YAML

Tervbe van véve, hogy mindegyikről fogunk írni, de most, amit meg szeretnénk mutatni, az a YAML.

YAML

A YAML egy emberbarát, adatmegadási formátum. A legjobban a JSON-hoz hasonlít, csak itt az adatok egymásba ágyazottságát nem kapcsos zárójelekkel, hanem behúzással (egyenlő számú szóköz) jelezzük. Amit a JSON tud, azt a YAML is tudja. Ez annyira igaz, hogy a YAML parser-ek feldolgozzák a JSON-t is. Itt egy egyszerű példa YAML formátumú adatra (tesztadat.yaml):

Előkészület

YAML parser

Szükségünk van egy YAML parser-re, ami elvégzi a piszkos munkát. Amit mi használni fogunk, az egy Python csomag a PyYaml. Ez nekünk most azért lesz jó, mert a RF mindazt tudja, amit a futtatókörnyezete tud. (Mint tudjuk, a RF egy Python program.)

A PyYaml -t parancssorból telepíthetjük könnyen:

YAML állomány beolvasása változóként

A RF *** Settings *** részébe kell beolvasni változóként a .yaml vagy .yml kiterjesztésű állományt.

A tesztadat.yaml-t egy speciális dictionary-ba olvassa be a RF. Innentől ebben a dictionary-ban tudunk „matatni”.

Szimpla értékek 

Ez a YAML állományban azok a változók, amik nincsenek al-struktúrában és egyetlen értéket tartalmaznak. Esetünkben a „name” és az „age” ilyenek. Ezekre változónévként lehet hivatkozni:

Szövegkezelési trükkök

A YAML-nek van két hasznos „trükkje” egybefüggő szövegek kezelésére.

  1. Ha sortördelt szöveget, sortördelten szeretnénk „értelmezni”, akkor erre a | jelet lehet használni a szöveg előtt. Lásd „intro multi” értékét a példában.
  2. Ha a sortördelt szöveg egybefüggő és csak azért tördeled a sorokat, hogy kiférjenek, akkor ezt a > jelel lehet jelezni a szöveg előtt. Lásd az „intro simple” értékét

Próbáld meg kiíratni ezeket az értékeket és „rögtön” láthatóvá válik, miről is van szó:

Megjegyzés: Azt is észre lehet venni, hogy a szóköz ebben az esetben változtatás nélkül működik változónévként.

Listaértékek

A YAML-ben egy változó alá tartozó, „-„ (kötő)jellel kezdődő sorok a listaelemek. Példánkban a nyelvek (languages) listája ilyen. A listákat ciklussal dolgozhatjuk fel, vagy arra is van mód, hogy az n. elemet érjük el:

Megjegyzés 1.: Figyeld meg, hogy a változónév előtt @ jel van! Ezzel jelöljük a RF-nek, hogy ez nem szimpla változó, hanem egy lista.

Megjegyzés 2.: Mivel a listaelemek számozása 0-tól kezdődik, ezért a 2. elem indexe: 1.

Dictionary (kulcs-érték párok listája)

A példa YAML-ben a „details”-en belül egy al-szerkezetet találunk „first name”, „last name” és „birth” kulcsokkal. A „birth” kulcs alatt még egy al-szerkezet található „year”, „month”, „day” kulcsokkal. Hogyan lehet ilyen esetben hozzáférni az adatokhoz? A „details” a fő kulcs, ezt a ${details} változó jelöli.

  • Alapesetben egy kulcs-érték párhoz, például a „first name”-hez így lehet hozzáférni:
    ${details[‘first name’]}
  • Egy másik módszer is műkidik RF-ben, amihez nem kell idézőjel: ${details}[last name]
  • Az előző módszerek akkor is működnek, ha al-szerkezethez tartozó értéket kell lekérdezni:
    • Születési év: ${details[‘birth’][‘year’]}
    • Születési hó: ${details}[birth][month]
  • Ha a szerkezet kulcsai nem tartalmaznak szóközt, akkor egy szebb formátum is használható: Születési nap: ${details.birth.day}

Megjegyzés: A legutolsó formátum olyan „szép” és könnyen olvasható, hogy érdemes ezt használni, ha lehet. Ehhez az kell, hogy a YAML adatok kulcsaiban ne legyen szóköz, hanem például aláhúzásjel. Pl.: „first_name”, „last_name”. 

A  dictionary-s kód tehát:

Megjegyzés: A fenti példa 3 különféle módot tartalmaz a dictionary-n belüli alszerkezetek eléréséhez:

  • szögletes zárójelek + ’ (idézőjel)
  • szögletes zárójelek
  • pontok

Összefoglalás

A YAML állományok nagyon hasznos lehetőséget biztosítanak olyan, strukturált tesztadatok tárolására, ahol a tesztadatokat minimális tanulás után olyan munkatárs is képes értelmezni, vagy szerkeszteni, aki nem rendelkezik adatbázis, vagy speciális adatformátum ismerettel. A hátránya talán az, hogy a behúzásokat be kell tartani (pont ugyanannyi szóköz előzi meg az egy szinten lévő elemeket), de ezt a Robot Framework tesztjeinél, kulcsszavainál is be kell tartani.

A leggyakrabban a YAML-t konfigurációs beállítások tárolására használják, de lényegében bármilyen strukturált tesztadat tárolására is használható.

A cikkben szereplő YAML és teljes RF állományt itt találjátok:

https://gitlab.com/passed_sharing/blog/-/tree/main/Robot_Framework/YAML

Megosztás

Facebook
LinkedIn
Twitter

Nem szeretnél lemaradni az új bejegyzésekről?

Tartalomjegyzék

sorozatok
Dechandt Dóra

BDD rövid bemutatása

BDD pro és kontra Egyik előző írásunkban (LINK) már kifejtettük, hogyan működik a BDD. Ezúttal az előnyeire és hátrányaira szeretnénk rávilágítani. A BDD (Behavior Driven

Érdekel a tesztelés világa?

Dolgozz velünk hazai és nemzetközi projekteken

egy csoport ember ül egy asztalnál laptopokkal

Várj, ne maradj le legújabb szakmai cikkeinkről

Iratkozz fel hírlevelünkre és minden hónapban elküldjük a legizgalmasabb cikkeket

egy laptop számítógépet tartó szemüveges férfi
egy süti csokireszelékkel
Tájékoztatjuk, hogy a honlap felhasználói élmény fokozásának érdekében sütiket alkalmazunk. A honlapunk használatával ön a tájékoztatásunkat tudomásul veszi.