TestNG umožňuje paralelně spouštět testovací metody, testovací třídy a testovací případy uvnitř vašeho projektu. Tím, že provádíme paralelní provádění, můžeme zkrátit „čas provádění“, protože testy jsou spouštěny a prováděny současně v různých vláknech.
Zde uvidíme, jak spustit více tříd (aka různé sady) pomocí TestNG.
Krok 1) Vytvoření souboru TestNG.xml pro provedení testu
Postupujte podle následujících kroků.
- Vytvořte nový projekt v zatmění
- Vytvořte v projektech dva balíčky (pojmenujte je jako com.suite1 a com.suite2)
- Vytvořte třídu v každém balíčku (pojmenujte je jako Flipkart.java a Snapdeal.java) a zkopírujte níže uvedený kód do příslušných tříd
- Vytvořte ve svém projektu nový soubor a pojmenujte jej jako testng.xml (Ujistěte se, že jste nainstalovali testovací plugin pro zatmění, pokyny jsou k dispozici zde). Testng.xml obsahuje veškerou konfiguraci (názvy tříd, názvy testů a jména jmen.
Flipkart.java
balíček com.suite1;import java.util.concurrent.TimeUnit;import org.openqa.selenium.Alert;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.firefox.FirefoxDriver;importovat org.openqa.selenium.interaction.Actions;import org.testng.annotations.AfterClass;import org.testng.annotations.BeforeClass;import org.testng.annotations.Test;veřejná třída Flipkart {Ovladač WebDriver = nový FirefoxDriver ();Řetězec uživatelské jméno = ""; // Změňte své uživatelské jméno a hesloŘetězcové heslo = "";// Tato metoda slouží k procházení flipkart URL@Před hodinoupublic void init () {driver.manage (). window (). maximize ();driver.manage (). timeouts (). implicitlyWait (60, TimeUnit.SECONDS);driver.navigate (). to ("https://www.flipkart.com");}// Chcete-li se přihlásit na flipkart@Testveřejné neplatné přihlášení () {driver.findElement (By.partialLinkText ("Přihlášení")). click ();driver.findElement (By.cssSelector (". Fk-input.login-form-input.user-email")).sendKeys (uživatelské jméno);driver.findElement (By.cssSelector (". Fk-input.login-form-input.user-pwd")).sendKeys (heslo);driver.findElement (By.cssSelector (". submit-btn.login-btn.btn")). click ();}// Hledat produkt@Testpublic void searchAndSelectProduct () {driver.findElement (By.id ("fk-top-search-box")). sendKeys ("moto g3");driver.findElement (By.cssSelector ("search-bar-submit.fk-font-13.fk-font-bold")).click ();// vyberte první položku ve výsledcích hledáníŘetězec css = ".gd-row.browse-grid-row: nth-of-type (1)> div: nth-child (1)> div> div: nth-child (2)> div> a";driver.findElement (By.cssSelector (css)). click ();}@Testpublic void buyAndRemoveFromCart () {driver.findElement (By.cssSelector (". Btn-express-checkout.btn-big.current")).click ();driver.findElement (By.cssSelector (". remove.fk-inline-block")). click ();Výstraha a = driver.switchTo (). Alert ();a.accept ();}@Testodhlášení z veřejné neplatnosti () {Akce s = nové Akce (ovladač);WebElement uživatel = driver.findElement (By.partialLinkText (uživatelské jméno));s.moveToElement (uživatel) .build (). perform ();driver.findElement (By.linkText ("Odhlášení")). click ();}@Po hodiněpublic void quit () {driver.close ();}}
SnapDeal.java
balíček com.suite2;import java.util.concurrent.TimeUnit;import org.openqa.selenium.Alert;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.firefox.FirefoxDriver;importovat org.openqa.selenium.interaction.Actions;import org.testng.annotations.AfterClass;import org.testng.annotations.BeforeClass;import org.testng.annotations.Test;veřejná třída SnapDeal {Ovladač WebDriver = nový FirefoxDriver ();Řetězec uživatelské jméno = ""; // Změňte své uživatelské jméno a hesloŘetězcové heslo = "";Řetězec pinCode = "";// Tato metoda slouží k procházení snapdeal URL@Před hodinoupublic void init () {driver.manage (). window (). maximize ();driver.manage (). timeouts (). implicitlyWait (60, TimeUnit.SECONDS);driver.navigate (). to ("https://www.snapdeal.com");}// Chcete-li se přihlásit na flipkart@Testveřejné neplatné přihlášení () {driver.findElement (By.xpath ("// button [text () = 'Login']")). click ();driver.switchTo (). frame ("loginIframe");driver.findElement (By.cssSelector ("div [onClick = 'getLoginForm ()']"))).click ();driver.findElement (By.id ("j_username")). sendKeys (uživatelské jméno);driver.findElement (By.id ("j_password_login")). sendKeys (heslo);driver.findElement (By.id ("signin_submit")). click ();driver.switchTo (). defaultContent ();}// Hledat produkt@Testpublic void searchAndSelectProduct () {driver.findElement (By.cssSelector (". col-xs-20.searchformInput.keyword")).sendKeys ("iphone 6s");driver.findElement (By.cssSelector (". sd-icon.sd-icon-search")). click ();// vyberte první položku ve výsledcích hledáníŘetězec css = ".product_grid_row: nth-of-type (1)> div: nth-child (1)";driver.findElement (By.cssSelector (css)). click ();}@Testpublic void buyAndRemoveFromCart () {driver.findElement (By.xpath ("// li [contains (text (), 'Silver')]"))). click ();driver.findElement (By.id ("pincode-check")). sendKeys (pinCode);driver.findElement (By.id ("buy-button-id")). click ();driver.findElement (By.cssSelector ("i [title = 'Odstranit položku']"))). click ();Výstraha a = driver.switchTo (). Alert ();a.accept ();}@Testodhlášení z veřejné neplatnosti () {driver.findElement (By.linkText ("ZAČNĚTE NAKUPOVAT NYNÍ")). click ();Akce s = nové Akce (ovladač);WebElement user = driver.findElement (By.cssSelector (". Sd-icon.sd-icon-user"));s.moveToElement (uživatel) .build (). perform ();driver.findElement (By.linkText ("Odhlášení")). click ();}@Po hodiněpublic void quit () {driver.close ();}}
TestNg.xml
Konečná struktura projektu vypadá níže,
Krok 2) Paralelní provádění v TestNG
Po vytvoření souboru XML, jak je uvedeno výše, v dalším kroku provedeme paralelní test. Níže je uveden kód.
1) počet vláken : Používá se pro paralelní provádění na základě číselného skriptu. Spustí se v paralelním nebo sekvenčním pořadí.
2) verbose : Používá se k protokolování podrobností spuštění v konzole. Hodnota by měla být 1-10. Podrobnosti protokolu v okně konzoly budou podrobnější a jasnější, když zvýšíte hodnotu podrobného atributu v konfiguračním souboru testng.xml.
3) name : Název sady. Tady je „Gmail Suite“
4) Paralelní : Chcete-li spouštět skripty paralelně, mohou to být testy / třídy / metody / sady. Výchozí hodnota je žádná
Klikněte pravým tlačítkem na testng.xml a vyberte spustit jako testování, jakmile budete úspěšní, uvidíte všechny výsledky
Po provedení výše uvedeného kódu získáte následující výstup.
Výstup:
1) název sady uvedený v souboru testng.xml
2) název testu uvedený v testng.xml
3) název třídy uvedený v testng.xml
4) názvy metod anotované pomocí @Test v souboru .java
Podobně provede také testovací sadu pro snap deal.
Závěr:
Zde jsme viděli ve výše uvedeném příkladu, jak používat Testng k provedení paralelního testu. TestNG dává možnost provést více testů paralelně v jednom konfiguračním souboru (XML).