Bevezető
Akik kitartóak voltak, most elolvashatják a jól megérdemelt Robot Framework-ös megoldást az előző cikkekben felvetett problémákra. Az előző rész itt található: Adatvezérlés 2.
Ismétlésféleképpen
Az előző részben egy egyszerű Python program-ot kezdtünk tesztelni. A program feladata az lenne, hogy argumentumnak megadott három hosszértékről eldöntse, hogy lehetnek-e egy háromszög oldalai. Az előző részben írtunk is erre egy tesztesetet és a tesztadatok variálásával még néhány tesztesetet megterveztünk.
Arra is rájöttünk, hogy „de jó lenne, ha szebben is lehetne”. Itt tartunk, innen folytatjuk.
Robot Framework és az adatvezérlés
Történelmi visszatekintés
Amikor anno tanultam az adatvezérlést, akkor a legtöbb eszközbe nem volt ilyen tudás beépítve, úgy kellett rábeszélni őket, hogy legyenek szívesek megcsinálni, amit szeretnénk. Ez lényegében néhány jól irányzott FOR ciklus megírását jelentette. A Robot Frameworkben is sokáig ez volt a megoldás. Mai napig is alkalmazható lenne, de van vele egy nagy gond, azon kívül, hogy nehézkes és csúnya megoldás. A gond az, hogy a tesztadatok által meghatározott teszteket egyetlen tesztesetként kezeli. Ha az egyik hibát dob, akkor az összes tesztünkre hibajelölő (FAILED) kerül. Ezután lehet a logból nyomozni, hogy melyik tesztadatokkal volt valójában gond.
Szerencsénkre van már egy nagyon jól használható könyvtár, ami a FOR ciklus írás tudományának a terhét leveszi a vállunkról.
Megjegyzés: Van egy beépített lehetőség a Robot Frameworkben, amivel lehet adatvezérelt teszteket írni, de ez nem képes külső adatforrásból beolvasni a tesztadatokat, így ezt a lépcsőfokot, most átugorva, rögtön a külső könyvtár használatát nézzük meg.
Telepítsük a Data Driver könyvtárat
Mielőtt belevágunk, fel kell telepítenünk egy könyvtárat, ami az adatvezérlést tudja megoldani. Ez a telepítés „szerteágazó” attól függően, hogy milyen verzióval rendelkezünk a Python-ból, vagy akarunk-e Excel táblát is kezelni. Itt a teljes leírás: https://github.com/Snooz82/robotframework-datadriver
Mi most úgy vesszük, hogy Python 3.6. vagy nagyobb verziónk van és szeretnénk Excelt is kezelni:
Becsaptalak, nem is igazi könyvtár
A Data Driver nem úgy viselkedik, mint egy rendes, valamirevaló könyvtár. A kulcsszókészlete annyira szegényes, hogy nincs is. J A DataDriver a rendes Robot Framework működést manipulálja úgy, hogy új teszteseteket hoz létre az adatvezérelt teszteléshez szükséges adatokat tartalmazó adatfájl alapján. Az adatfájlok .csv , .xls vagy .xlsx fájlok lehetnek.
Hogyan kell használni? (elmélet)
- Ha a DataDriver könyvtárt használod, akkor azokat a lépéseket, amiket tesztesetként szeretnél végrehajtani, bele kell tenni pontosan egy kulcsszóba, úgy, hogy a tesztadatoknak egy-egy paramétert feleltetünk meg.
- El kell készíteni a tesztadatokat tároló állományt.
- A Settings részben két dolgot kell megmondani:
- Hol éri el a robot a tesztadatokat. Ez lényegében a tesztadatodat tároló csv vagy Excel állomány megadását jelenti.
- Melyik az a kulcsszó, amit a teszteseteknél szeretnénk használni. (Amit 1. lépésben létrehoztunk)
- A tesztesetek (Test Cases) részben megadunk egy minta tesztesetet.
Hogyan kell használni? (gyakorlat)
Az előző részben (adatvezerles 2) használt (hibás) python programot fogjuk tesztelni. Ez így néz ki:
1. Kulcsszó:
Az a jó hír, hogy az előző részben elkészített kulcsszó tökéletesen megfelelő lesz nekünk, nem kell semmit alakítani rajta. Szóval csinálj mindent úgy, mint „normál” esetben.
2. Tesztadat állomány
Ez sem túl nehéz 🙂
Akár csv, akár Excel megoldást választasz, az első sor a fejléc sor. Ez sorban a következő elemeket tartalmazza:
Fejlécsor tartalma | Megjegyzés |
*** Test Cases *** | Konkrétan ez a mező neve. Ebben az oszlopban lesznek a tesztesetek nevei. Ha nem akarjuk elnevezni a tesztesetet, akkor üresen hagyható. |
Paraméterek nevei | A minta (template) kulcsszó paraméterei. pl.: ${expected_result} Ezekben az oszlopokban lesznek a paraméterekhez tartozó értékek |
Egy minta táblázat (Itt csak az olvashatóság miatt formáztuk, de Excelben nem kell semmit formázni):
*** Test Cases *** | ${a} | ${b} | ${c} | ${expected_result} |
Real triangle | 3 | 4 | 5 | triangle |
Not real triangle: a+b<c | 1 | 5 | 10 | not triangle |
Not real triangle: b+c<a | 10 | 5 | 1 | not triangle |
Not real triangle with negative side: b<0 | 9 | -1 | 3 | not triangle |
1 | 10 | 5 | not triangle |
Megjegyzés: Excel esetén adj nevet a munkalapnak! (Pl.: ddt_data)
3. Settings rész
Esetünkben így fog kinézni a Settings rész:
Magyarázatok:
Library Process
A Process könyvtár szükséges a parancssori futtatáshoz. Ennek segítségével tudjuk a Python programot futtatni. (Az előző részben már volt erről szó.)
Library DataDriver file=ddt_testdata.xlsx sheet_name=ddt_data
A DataDriver könyvtár. A file paraméter a tesztadat állományt adja meg. Excel esetén a munkalap nevét is meg kell adnunk a sheet_name paraméterben.
Test Template Is Triangle
A minta (template) kulcsszó meghatározása.
4. Test Cases rész
Itt fontos, hogy csak a teszteset neve szerepelhet, a tesztesetnek nincs „teste”, nincsenek lépései. A riportban és a logban látszódó teszteset név attól függ, hogy mi szerepel a tesztadatokban
- Ha egy tesztesetrekord nem tartalmaz teszteset nevet, akkor ehhez a rekordhoz tartozó tesztfutásnál az itt megadott név fog látszani a riportban és a futási logban.
- Ha egy tesztesetrekord tartalmaz teszteset nevet, akkor a tesztesetrekordban megadott név fog látszani a riportban és a futási logban.
A teszteset nevébe „belefogalmazhatjuk” a paraméterértékeket. Ez egy jó lehetőség arra, ha nem akarjuk a tesztadatoknál megadni a tesztesetek nevét, de azt szeretnénk, hogy egyértelmű legyen a riportban, hogy milyen adatokkal történt a futás.
Példa:
Összefoglalás
Lássuk egybe a kódot:
A robot és Excel állományt itt is megtalálod: https://gitlab.com/passed_sharing/robot_framework/-/tree/main/Adatvezerles
Győzelem!
Szép, működik és minden egyes tesztrekord külön tesztesetként látható a riportban és a logban. Megvannak a hibák? 🙂
Az adatvezérlés egy nagyon hatékony eszköze a tesztautomatizálásnak. Lehet ez még hatékonyabb is? Lehet! Például ezekkel:
- Adatkombinációk
A DataDriver könyvtár képes együttműködni a Microsoft PICT eredményével. (A PICT „adatvariáló” eszközről itt olvashatsz)
- Automatizált tesztadat készítés
Van arra mód, hogy bizonyos tesztadatokat szabályozottan, de véletlenszerűen hozzunk létre. Ez a téma megér még egy cikket. Hamarosan… 🙂
Jó tesztet! Hajrá!