Grupy w TestNG

TestNG to platforma testowa obejmująca różne typy projektów testów, takie jak testy jednostkowe, funkcjonalne, kompleksowe, interfejsu użytkownika i integracyjne.

Możesz uruchomić jeden lub wiele pakietów (pakiet oznacza tutaj hermetyzację grupy klas w odpowiednim formacie dyrektorskim), tworząc XML i uruchamiając go przez maven.

TestNG Grupy z przykładem

Używamy grup w Testowanie gdy,

  • Nie chcemy definiować metod testowych osobno w różnych klasach (w zależności od funkcjonalności) i
  • Jednocześnie chcę zignorować (nie wykonać) niektóre przypadki testowe, tak jakby nie istniały w kodzie.
  • Aby to wykonać, musimy je pogrupować. Robi się to za pomocą mechanizmów „include” i „exclude” obsługiwanych w testNG.

W poniższym przykładzie pokazaliśmy składnię wykorzystania grup w pliku XML.

@Test (groups = { "bonding", "strong_ties" })

Tutaj używamy dwóch nazw grup, tj. „bonding” i „strong_ties” (są to logiczne nazwy, które można zmienić według własnego uznania).

<groups> tag definiuje początek grup w formacie XML.

Dostosuj swój XML, aby wybrać wspomnianą grupę z klas testowych. Poniżej omówiono składnię deklarowania grup w pliku XML, np

 <groups>		
   <run>		
    <include name="bonding" />		
   </run>		
  </groups>		

Załóżmy więc, że w klasie jest 10 metod testowych.

z nich,

  • 6 metod zostało oznaczonych w grupie „wiązanie” i
  • 4 są w grupie „strong_ties”

Idąc dalej, ustawimy maven/Java ścieżkę i użyj Eclipse IDE, aby zademonstrować użycie grup przy użyciu plików XML w Java oparty na projekcie maven.

Utwórz XML dla TestNG z tagami

  • Plik XML (Extensible Markup Language) w środowisku Maven zawiera informacje o jednym lub większej liczbie testów i jest zdefiniowany przez etykietka.
  • Informacje testowe w formacie XML są reprezentowane przez etykietka i może zawierać jeden lub więcej TestNG Klasy.
  • A Java klasa, która zawiera @Test adnotacja powyżej metod badawczych jest zdefiniowana jako TestNG Metody.

Do zbudowania działającego pliku XML testNG używa się wielu tagów w sekwencji , I

  • Pierwszy jest tag, który zawiera logiczną nazwę definiującą pełne informacje przekazywane testNG w celu wygenerowania raportu wykonania.
  • Drugie jest , zauważ, że jest to nazwa logiczna, która przechowuje informacje z raportu wykonania testu, takie jak zaliczenie, niepowodzenie, pominięcie przypadków testowych i inne informacje, takie jak całkowity czas wykonania i informacje o grupie
  • Trzeci jestcom.group.guru99.TC_Class1” />, com.group.guru99 to używany pakiet, a nazwa klasy testowej to TC_Class1.
<?xml version="1.0" encoding="UTF-8" ?>	
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">	
 	<suite name="Suite">	
		<test name="Guru 99 Smoke Test Demo">	
			<groups>	
				<run>	
   					 <include name="strong_ties" />	
        		</run>	
       		</groups>	
			<classes>	
					<class name="com.group.guru99.TC_Class1" />	
           	</classes>	
		</test>	
  </suite>	

Będziemy używać tego kodu XML w nadchodzącym filmie podanym w poniższych sekcjach.

„wyklucz” lub „włącz” w testowym formacie XML

Załóżmy, że uważasz, że użycie mechanizmu grupy jest skomplikowane. W takim przypadku XML testNG udostępnia funkcjonalność wykluczania/dołączania testu.

Exclude Tag:  Syntax for exclude tag <exclude name="${TEST_CASE_NAME}" />
Include Tag:  Syntax for include tag <include name="${TEST_CASE_NAME}" />

Uwaga: Możemy włączyć/wyłączyć wiele przypadków testowych jednocześnie, co działa również w przypadku Grup.

Uruchom TestNG Grupuj, dołączaj, wykluczaj kod (pokaz wideo)

Wyjaśnienie dotyczące Java Kod i XML z grupuj, wykluczaj i włączaj znacznik w formacie XML.

Scenariusz testowy: Uruchom witrynę demonstracyjną Guru99 Banking, następnie sprawdź kilka rzeczy na stronie logowania, wprowadź dane uwierzytelniające i ponownie zweryfikuj kilka nowych rzeczy w aplikacji po zalogowaniu.

Uruchom TestNG Grupuj, uwzględnij, wyklucz kod

Uwaga: Każdy kodowany krok powinien być zadeklarowany w oddzielnych metodach, ale po wykonaniu wykona metody testowe w zależności od wpisów w pliku XML.

  • Metoda 1: Zainicjuj przeglądarkę i uruchom adres URL (tc01LaunchURL())
  • Metoda 2: Sprawdź nagłówek strony logowania (tc02VerifyLaunchPage())
  • Metoda 3: Wprowadź nazwę użytkownika i hasło w formularzu logowania (tc03EnterCredentials())
  • Metoda 4: Sprawdź obecność identyfikatora menedżera na panelu użytkownika (tc04VerifyLoggedInPage())
  • Metoda 5: Sprawdź jeszcze kilka linków na panelu użytkownika (tc05VerifyHyperlinks())

Kod dla naszego scenariusza:

package com.group.guru99;	

import java.util.concurrent.TimeUnit;	

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;	

public class TC_Class1 {	
    public static final WebDriver webDriver = new FirefoxDriver();;	

    String launchPageHeading = "//h3[text()='Guru99 Bank']";	
    final String userName_element = "//input[@name='uid']", password_element = "//input[@name='password']",	
            signIn_element = "//input[@name='btnLogin']";	
    final String userName_value = "mngr28642", password_value = "ydAnate";	
    final String managerID = "//td[contains(text(),'Manger Id')]";	
    final String newCustomer = "//a[@href='addcustomerpage.php']", fundTransfer = "//a[@href='FundTransInput.php']";	

    /**	
     * This test case will initialize the webDriver	
     */	
    @Test(groups = { "bonding", "strong_ties" })	
    public void tc01LaunchURL() {	
        webDriver.manage().window().maximize();	
        webDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);	
        webDriver.get("https://www.demo.guru99.com/V4/");	
    }	

    /**	
     * Will check the presence of Heading on Login Page	
     */	
    @Test(groups = { "bonding" })	
    public void tc02VerifyLaunchPage() {	
        Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(),	
                "Home Page heading is not displayed");	
        System.out.println("Home Page heading is displayed");	
    }	

    /**	
     * This test case will enter User name, password and will then click on	
     * signIn button	
     */	
    @Test(groups = { "bonding", "strong_ties" })	
    public void tc03EnterCredentials() {	
        webDriver.findElement(By.xpath(userName_element)).sendKeys(userName_value);	
        webDriver.findElement(By.xpath(password_element)).sendKeys(password_value);	
        webDriver.findElement(By.xpath(signIn_element)).click();	
    }	

    /**	
     * This test case will verify manger's ID presence on DashBoard	
     */	
    @Test(groups = { "strong_ties" })	
    public void tc04VerifyLoggedInPage() {	
        Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(),	
                "Manager ID label is not displayed");	
        System.out.println("Manger Id label is displayed");	
    }	

    /**	
     * This test case will check the presence of presence of New customer link	
     * And FundTransfer link in Left pannel	
     */	
    @Test(groups = { "bonding" })	
    public void tc05VerifyHyperlinks() {	
        Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(),	
                "New customer hyperlink is not displayed");	
        System.out.println("New customer hyperlink is displayed");	

        Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(),	
                "Fund Transfer hyperlink is not displayed");	
        System.out.println("Fund Transfer hyperlink is displayed");	
    }	

}	

Uwaga: dane uwierzytelniające są ważne tylko przez 20 dni, więc jeśli spróbujesz uruchomić kod na komputerze lokalnym, może wystąpić błąd nieprawidłowych danych uwierzytelniających.

Wyjaśnienie kodu:

Jak wspomniano powyżej, stworzyliśmy 5 przypadków testowych do wykonania każdej akcji niezależnymi metodami.

Dla każdej metody powiązaliśmy parametr grupowy z pewną wartością.

Zasadniczo są to nazwy grup różnicujących, tj. „silne więzi” i „więzi”.

  • Pierwsza i trzecia metoda są oznaczone jako „wiązanie”, „silne_więzi”, co oznacza, że ​​jeśli XML zostanie zaktualizowany w dowolnej grupie, to Przypadek testowy będzie działać.
  • Druga metoda jest oznaczona tylko do grupy „powiązania”, co oznacza, że ​​jeśli XML zostanie zaktualizowany o grupę powiązania. Tylko w takim przypadku ten przypadek testowy zostanie uruchomiony.
  • Czwarty przypadek testowy jest oznaczony jako należący do grupy strong_ties, co oznacza, że ​​ten przypadek testowy zostanie uruchomiony tylko wtedy, gdy plik XML zostanie zaktualizowany o nazwę grupy strong_ties.
  • Ostatni, ale nie najmniej ważny, piąty przypadek testowy jest dołączony do grupy wiązania, co oznacza, że ​​ten przypadek testowy zostanie uruchomiony tylko wtedy, gdy XML zostanie zaktualizowany o nazwę grupy łączenia.

Ogólnie rzecz biorąc, mamy 4 scenariusze;

Scenariusz 1: Chcemy uruchomić wszystkie przypadki testowe niezależnie od nazwy grupy. W takim przypadku usuniemy tag Group z działającego XML-a.

Scenariusz 2: Chcemy uruchomić kilka testów, które są związane tylko z jedną z grup, tj. strong_ties lub bonding. Zapoznaj się z:

  • W tym filmie parametr Group jest komentowany na podstawie działającego kodu XML. W związku z tym zobaczysz, że wszystkie przypadki testowe zostały wykonane.
  • W kontynuacji filmu, teraz umieściliśmy nazwę grupy w formacie XML, możesz zobaczyć, że działają tylko przypadki testowe specyficzne dla tej grupy.

Scenariusz 3: Używamy mechanizmu Exclude, aby wykluczyć przypadek testowy. Proszę zapoznać się z filmem

  • Widzisz, że użyliśmy wykluczenia kilku przypadków testowych (tc02), zapisując ich nazwy w działającym formacie XML. W efekcie końcowym wspomniane przypadki testowe nie zostały uruchomione.

Scenariusz 4: Na koniec używamy mechanizmu testów dołączania, aby uwzględnić przypadki testowe (tc01LaunchURL, tc03EnterCredentials i tc05VerifyHyperlinks). Proszę zapoznać się z filmem

W tym filmie zobaczysz, że przypadki testowe wymienione w formacie XML działają tylko podczas wykonywania testu.

Proszę pobrać kod z kodu dla powyższego przykładu-

Pobierz powyższy kod

Podsumowanie

Poznaliśmy tutaj stosunkowo nowy sposób uruchamiania przypadków testowych przy użyciu XML w projekcie Maven.

Na początek przedstawiliśmy krótkie wprowadzenie do testNG, a następnie przedstawiliśmy pełną specyfikację techniczną grup, wykluczania i uwzględniania.