TestNG: Jak uruchomić wiele zestawów testów w Selenium

Spisie treści:

Anonim

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.

  1. Utwórz nowy projekt w Eclipse
  2. Utwórz dwa pakiety w projektach (nazwij je com.suite1 i com.suite2)
  3. Utwórz klasę w każdym pakiecie (nazwij je Flipkart.java i Snapdeal.java) i skopiuj poniższy kod do odpowiednich klas
  4. 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).