TestNG je testovací rámec, který pokrývá různé typy návrhů testů, jako je test jednotky, funkční test, end-to-end test, test uživatelského rozhraní a test integrace.
V kódu Testng můžete spustit jeden nebo více testovacích případů.
Není-li definována priorita testu, při spuštění více testovacích případů přiřadí TestNG všem @Test prioritu jako nulu (0).
Nyní, při běhu; nižší priority budou naplánovány jako první.
V tomto výukovém programu se naučíte -
- Ukázka kódu TestNG bez priority
- Ukázka kódu TestNG bez priority v abecedním pořadí
- Jak nastavit prioritu v TestNG
- Metody se stejnou prioritou
- Kombinace jak prioritních (se stejnou prioritou), tak i bez prioritních metod
Ukázka kódu TestNG bez priority
Pojďme si vzít scénář, kde bude vyžadováno řazení, aby bylo možné projít všemi testovacími případy:
Scénář: Vytvořte kód, ve kterém jste povinni provádět vyhledávání Google pomocí konkrétního klíčového slova, které říká „Facebook“. Nyní ověřte, zda je název prohlížeče změněn na „Facebook - Vyhledávání Google“.
Poznámka: Každý krok, který kódujete, by měl být v samostatných metodách
Metoda 1 : Otevřete prohlížeč, řekněme Firefox (openBrowser ())
Metoda 2 : Spuštění Google.com (launchGoogle ())
Metoda 3 : Proveďte vyhledávání pomocí „Facebooku“ (performSearchAndClick1stLink ())
Metoda 4 : Ověřte název vyhledávací stránky Google (FaceBookPageTitleVerification ())
Kód pro náš scénář :
import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations.Test;veřejná třída Priority_In_testNG {Ovladač WebDriver;// Metoda 1: Otevřete Browera a řekněte Firefox@Testpublic void openBrowser () {driver = new FirefoxDriver ();}// Metoda 2: Spusťte Google.com@Testpublic void launchGoogle () {driver.get ("http://www.google.co.in");}// Metoda 3: Proveďte vyhledávání pomocí „Facebooku“@Testpublic void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Hledat']")). sendKeys ("Facebook");}// Metoda 4: Ověřte název vyhledávací stránky Google.@Testpublic void FaceBookPageTitleVerification () vyvolá výjimku {driver.findElement (By.xpath (".//*[@ value = 'Search']"))). click ();Závit. Spánek (3000);Assert.assertEquals (driver.getTitle (). Contains ("Facebook - Google Search"), true);}}
Vysvětlení kódu
Jak bylo uvedeno výše, vytvořili jsme 4 testovací případy pro provedení každé akce nezávislými metodami.
- První metoda (openBrowser) uvádí inicializaci prohlížeče Firefox.
- Druhá metoda (launchGoogle) uvádí, že spuštění Google.com je v inicializovaném prohlížeči.
- Třetí metoda (peformSeachAndClick1stLink) uvádí, že se provede vyhledávání ve vyhledávacím poli (s xpath (".//*[@title='Search ']") s hledaným výrazem jako Facebook a
- Čtvrtá a poslední metoda (FaceBookPageTitleVerification) uvádí, že klikněte na ikonu vyhledávání Google a ověřte, že název prohlížeče byl změněn na Facebook - Google Search.
Nyní spusťte tento kód pomocí testNG, jak je znázorněno ve videu, zjistíte, že všechny testovací případy selhávají. Důvod selhání: protože existuje závislost předat předchozí testovací případ, bude předán pouze aktuální testovací případ.
V tomto případě,
- První metoda, která se provede, je openBrowser (). Prošlo to, protože nemá žádnou závislost.
- Druhou spuštěnou metodou je FaceBookPageTitleVerification (); selhává, protože se pokoušíme kliknout na tlačítko Hledat a ověřit název prohlížeče.
- Můžete vidět, že pokud aktivita vyhledávání není zpracována, jak může projít jakýkoli další krok. To je důvod, proč moje testovací případy selhávají.
PROSÍM: openBrowserFAILED: FaceBookPageTitleVerificationFAILED: launchGoogleFAILED: peformSeachAndClick1stLink
Ukázka kódu TestNG bez priority v abecedním pořadí
Pokud nezmiňujeme žádnou prioritu, testng provede metody @Test na základě abecedního pořadí jejich názvů metod bez ohledu na jejich místo implementace v kódu.
balíček com.guru.testngannotations;import org.testng.annotations.Test;veřejná třída TestNG_Priority_Annotations {@Testpublic void c_method () {System.out.println ("Jsem v metodě C");}@Testpublic void b_method () {System.out.println ("Jsem v metodě B");}@Testpublic void a_method () {System.out.println ("Jsem v metodě A");}@Testpublic void e_method () {System.out.println ("Jsem v metodě E");}@Testpublic void d_method () {System.out.println ("Jsem v metodě D");}}
Výstup
Jsem v metodě AJsem v metodě BJsem v metodě C.Jsem v metodě D.Jsem v metodě E.
Ačkoli jsme metody definovali náhodně (c, b, a, e, d), testng provedl metody na základě jejich názvů metod s ohledem na abecední pořadí a to samé se projevilo i ve výstupu.
Jak nastavit prioritu v TestNG
Jak jste viděli v předchozím příkladu, že pro předání tohoto scénáře je vyžadováno řazení, takže budeme upravovat předchozí část kódu pomocí Prioritního parametru tak, aby každý test běžel proti prioritě, která jim byla přiřazena.
Nyní, jak vidíte, jsme každému testu přidělili Prioritu, což znamená, že testovací případ bude nejprve proveden s nižší prioritou.
Priorita v testNG v akci
import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations.Test;veřejná třída Priority_In_testNG {Ovladač WebDriver;// Metoda 1: Otevřete prohlížeč a řekněte Firefox@Test (priorita = 1)public void openBrowser () {driver = new FirefoxDriver ();}// Metoda 2: Spusťte Google.com@Test (priorita = 2)public void launchGoogle () {driver.get ("http://www.google.co.in");}// Metoda 3: Proveďte vyhledávání pomocí „Facebooku“@Test (priorita = 3)public void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Hledat']")). sendKeys ("Facebook");}// Metoda 4: Ověřte název vyhledávací stránky Google.@Test (priorita = 4)public void FaceBookPageTitleVerification () vyvolá výjimku {driver.findElement (By.xpath (".//*[@ value = 'Search']"))). click ();Závit. Spánek (3000);Assert.assertEquals (driver.getTitle (). Contains ("Facebook - Google Search"), true);}}
Vysvětlení kódu
Po přiřazení priority každému testcases, spusťte výše uvedený kód pomocí testNG, jak je ukázáno ve videu-2 uvedeném níže.
Zde vidíte, že testovací případy mají prioritu. Nejprve se provede testovací případ s nižší prioritou, tj. Nyní se v testovacích případech provede sekvenční provedení podle priority. Všechny testovací případy tedy nyní procházejí.
Všimněte si konzoly zatmění:
Výstup :
PROSÍM: openBrowserPŘEDÁNO: launchGooglePŘEDÁNO: peformSearchAndClick1stLinkPŘEDÁNO: FaceBookPageTitleVerification
Číslo 0 má nejvyšší prioritu (bude provedeno jako první) a priorita bude pokračovat na základě daného čísla, tj. 0 má nejvyšší prioritu než 1. 1 má nejvyšší prioritu než 2 atd.
balíček com.guru.testngannotations;import org.testng.annotations.Test;veřejná třída TestNG_Priority_Annotations {@Test (priorita = 6)public void c_method () {System.out.println ("Jsem v metodě C");}@Test (priorita = 9)public void b_method () {System.out.println ("Jsem v metodě B");}@Test (priorita = 1)public void a_method () {System.out.println ("Jsem v metodě A");}@Test (priorita = 0)public void e_method () {System.out.println ("Jsem v metodě E");}@Test (priorita = 3)public void d_method () {System.out.println ("Jsem v metodě D");}}
Výstup
Jsem v metodě E.Jsem v metodě AJsem v metodě D.Jsem v metodě C.Jsem v metodě B
Zde jsme stanovili priority jako 0,1,3,6,9. Nejprve se tedy provede metoda s prioritou 0 a poté metoda s prioritou-1 atd. Název metody abecedního pořadí zde nebude brán v úvahu, protože jsme stanovili priority
Metody se stejnou prioritou:
Může existovat šance, že metody mohou obsahovat stejnou prioritu. V těchto případech testng zohledňuje abecední pořadí názvů metod, jejichž priorita je stejná.
balíček com.guru.testngannotations;import org.testng.annotations.Test;veřejná třída TestNG_Priority_Annotations {@Test (priorita = 6)public void c_method () {System.out.println ("Jsem v metodě C");}@Test (priorita = 9)public void b_method () {System.out.println ("Jsem v metodě B");}@Test (priorita = 6)public void a_method () {System.out.println ("Jsem v metodě A");}@Test (priorita = 0)public void e_method () {System.out.println ("Jsem v metodě E");}@Test (priorita = 3)public void d_method () {System.out.println ("Jsem v metodě D");}}
Výstup
Jsem v metodě E.Jsem v metodě D.Jsem v metodě AJsem v metodě C.Jsem v metodě B
Zde se 'e' a 'd' provádějí na základě jejich hodnot priority. Ale metody 'a' a 'c' obsahují stejnou hodnotu priority (6). Tady tedy testng zvažuje abecední pořadí „a“ a „c“ a podle toho je provádí.
Kombinace jak prioritních (se stejnou prioritou), tak i bez prioritních metod:
V tomto případě pokryjeme dva případy v jedné testovací třídě.
- Metody se stejnou hodnotou priority.
- Více než jedna metoda bez priority.
balíček com.guru.testngannotations;import org.testng.annotations.Test;veřejná třída TestNG_Priority_Annotations {@Test()public void c_method () {System.out.println ("Jsem v metodě C");}@Test()public void b_method () {System.out.println ("Jsem v metodě B");}@Test (priorita = 6)public void a_method () {System.out.println ("Jsem v metodě A");}@Test (priorita = 0)public void e_method () {System.out.println ("Jsem v metodě E");}@Test (priorita = 6)public void d_method () {System.out.println ("Jsem v metodě D");}}
Výstup:
Jsem v metodě BJsem v metodě C.Jsem v metodě E.Jsem v metodě AJsem v metodě D.
PROCHÁZENO: b_methodPROŠLO: c_methodPROSÍM: e_methodPROŠLO: a_methodPROŠLO: d_method
Vysvětlení:
První preference: Neprioritizované metody: 'c' a 'b': Na základě abecedního pořadí bylo nejprve provedeno 'b' a poté 'c'.
Druhá preference: Prioritizované metody: 'a', 'e' a 'd': 'e' bylo provedeno jako první, protože mělo nejvyšší prioritu (0). Protože priorita metod 'a' a 'd' byla stejná, testng zvažoval abecední pořadí názvů jejich metod. Takže mezi nimi bylo nejprve provedeno „a“ a poté „d“.
Rozlišuje velká a malá písmena v TestNG
Jen pro vaši informaci existuje standardní syntaxe pro definování priority v testNG, tj. @Test (priorita = 4) , předpokládejme , že ji definujete v nějaké jiné syntaxi, například @Test (PRIORITY = 1), pak se vaše IDE zobrazí jako chyba kompilace . Viz obrázek níže:
Závěr:
Jak jste viděli, pokud existuje požadavek na spuštění sady testovacích případů v konkrétní sekvenci, lze ji snadno provést pomocí priority pomocí testNG jako nástroje pro spuštění.
Tento výukový program je možný díky příspěvkům Ramandeepa Singha a Rama Krishna Gadde