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.
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-
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.