TestNG umożliwia równoległe uruchamianie metod testowych, klas testowych i przypadków testowych wewnątrz projektu. Wykonując równoległe wykonywanie, możemy skrócić „czas wykonywania”, ponieważ testy są uruchamiane i wykonywane jednocześnie w różnych wątkach.
Tutaj zobaczymy, jak uruchomić wiele klas (inaczej różne zestawy) przy użyciu TestNG.
Krok 1) Utworzenie pliku TestNG.xml do wykonania testu
W tym celu wykonaj poniższe czynności.
- Utwórz nowy projekt w Eclipse
- Utwórz dwa pakiety w projektach (nazwij je com.suite1 i com.suite2)
- Utwórz klasę w każdym pakiecie (nazwij je Flipkart.java i Snapdeal.java) i skopiuj poniższy kod do odpowiednich klas
- Utwórz nowy plik w swoim projekcie i nazwij go testng.xml (upewnij się, że masz zainstalowaną wtyczkę testującą dla eclipse, instrukcje dostępne tutaj). Testng.xml zawiera całą konfigurację (nazwy klas, nazwy testowe i nazwy garniturów.
Flipkart.java
pakiet 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;import org.openqa.selenium.interactions.Actions;import org.testng.annotations.AfterClass;import org.testng.annotations.BeforeClass;import org.testng.annotations.Test;klasa publiczna Flipkart {Sterownik WebDriver = nowy FirefoxDriver ();Nazwa użytkownika w postaci ciągu znaków = ""; // Zmień na swoją nazwę użytkownika i hasłoHasło ciąg = "";// Ta metoda służy do nawigacji po adresie URL flipkarta@Przed zajęciamipublic void init () {driver.manage (). window (). maximize ();driver.manage (). timeouts (). implicitlyWait (60, TimeUnit.SECONDS);driver.navigate (). to („https://www.flipkart.com”);}// Aby zalogować się na flipkart@Testpublic void login () {driver.findElement (By.partialLinkText ("Login")). click ();driver.findElement (By.cssSelector (". Fk-input.login-form-input.user-email")).sendKeys (nazwa użytkownika);driver.findElement (By.cssSelector (". Fk-input.login-form-input.user-pwd")).sendKeys (hasło);driver.findElement (By.cssSelector (". submit-btn.login-btn.btn")). click ();}// Wyszukaj 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")).Kliknij();// wybierz pierwszą pozycję w wynikach wyszukiwaniaString 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")).Kliknij();driver.findElement (By.cssSelector (". remove.fk-inline-block")). click ();Alert a = driver.switchTo (). Alert ();a.accept ();}@Testpublic void logout () {Akcje s = nowe Akcje (sterownik);WebElement user = driver.findElement (By.partialLinkText (nazwa użytkownika));s.moveToElement (użytkownik) .build (). perform ();driver.findElement (By.linkText ("Wyloguj")). click ();}@Po zajęciachpublic void quit () {driver.close ();}}
SnapDeal.java
pakiet 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;import org.openqa.selenium.interactions.Actions;import org.testng.annotations.AfterClass;import org.testng.annotations.BeforeClass;import org.testng.annotations.Test;public class SnapDeal {Sterownik WebDriver = nowy FirefoxDriver ();Nazwa użytkownika w postaci ciągu znaków = ""; // Zmień na swoją nazwę użytkownika i hasłoHasło ciąg = "";String pinCode = "";// Ta metoda służy do nawigacji po adresie URL snapdeal@Przed zajęciamipublic void init () {driver.manage (). window (). maximize ();driver.manage (). timeouts (). implicitlyWait (60, TimeUnit.SECONDS);driver.navigate (). to („https://www.snapdeal.com”);}// Aby zalogować się na flipkart@Testpublic void login () {driver.findElement (By.xpath ("// button [text () = 'Login']")). click ();driver.switchTo (). frame ("loginIframe");driver.findElement (By.cssSelector ("div [onClick = 'getLoginForm ()']")).Kliknij();driver.findElement (By.id ("j_username")). sendKeys (nazwa użytkownika);driver.findElement (By.id ("j_password_login")). sendKeys (hasło);driver.findElement (By.id ("signin_submit")). click ();driver.switchTo (). defaultContent ();}// Wyszukaj 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 ();// wybierz pierwszą pozycję w wynikach wyszukiwaniaString 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 [zawiera (text (), 'Srebro')]")). click ();driver.findElement (By.id ("pincode-check")). sendKeys (pinCode);driver.findElement (By.id ("id-przycisku-kupna")). click ();driver.findElement (By.cssSelector ("i [title = 'Usuń element']")). click ();Alert a = driver.switchTo (). Alert ();a.accept ();}@Testpublic void logout () {driver.findElement (By.linkText ("ZACZNIJ ZAKUPY TERAZ")). click ();Akcje s = nowe Akcje (sterownik);WebElement user = driver.findElement (By.cssSelector (". Sd-icon.sd-icon-user"));s.moveToElement (użytkownik) .build (). perform ();driver.findElement (By.linkText ("Wyloguj")). click ();}@Po zajęciachpublic void quit () {driver.close ();}}
TestNg.xml
Ostateczna struktura projektu wygląda jak poniżej,
Krok 2) Równoległe wykonywanie w TestNG
Po utworzeniu pliku xml, jak pokazano powyżej, w następnym kroku wykonamy test równoległy. Poniżej znajduje się kod.
1) liczba wątków : jest używana do wykonywania równoległego na podstawie skryptu liczbowego. Będzie wykonywany równolegle lub sekwencyjnie.
2) verbose : służy do rejestrowania szczegółów wykonania w konsoli. Wartość powinna wynosić 1-10. Szczegóły dziennika w oknie konsoli staną się bardziej szczegółowe i wyraźniejsze, gdy zwiększysz wartość atrybutu pełnego w pliku konfiguracyjnym testng.xml.
3) nazwa : nazwa pakietu. Oto „Gmail Suite”
4) Równoległe : Aby uruchamiać skrypty równolegle, wartością mogą być testy / klasy / metody / zestawy. Wartość domyślna to brak
Kliknij prawym przyciskiem myszy plik testng.xml i wybierz Uruchom jako testowanie, po pomyślnym wyświetleniu wszystkich wyników
Po wykonaniu powyższego kodu otrzymasz następujące dane wyjściowe.
Wynik:
1) nazwa pakietu podana w pliku testng.xml
2) nazwę testu podaną w testng.xml
3) nazwę klasy podaną w testng.xml
4) nazwy metod z adnotacją @Test w pliku .java
Podobnie, wykona również zestaw testów dla transakcji snap.
Wniosek:
W powyższym przykładzie widzieliśmy, jak używać Testng do wykonywania testu równoległego. TestNG umożliwia równoległe wykonywanie wielu testów w jednym pliku konfiguracyjnym (XML).