Selen - TestNG

TestNG to potężna platforma testowa, ulepszona wersja JUnit, która była używana przez długi czas, zanim powstał TestNG. NG oznacza „następną generację”.

Framework TestNG zapewnia następujące funkcje -

  • Adnotacje ułatwiają nam organizowanie testów.
  • Elastyczna konfiguracja testów.
  • Przypadki testowe można łatwiej grupować.
  • Zrównoleglenie testów można osiągnąć za pomocą TestNG.
  • Wsparcie dla testów opartych na danych.
  • Wbudowane raportowanie.

Instalowanie TestNG dla Eclipse

Step 1 - Uruchom Eclipse i wybierz „Zainstaluj nowe oprogramowanie”.

Step 2 - Wpisz adres URL jako „http://beust.com/eclipse” i kliknij „Dodaj”.

Step 3- Otworzy się okno dialogowe „Dodaj repozytorium”. Wpisz nazwę jako „TestNG” i kliknij „OK”

Step 4 - Kliknij „Zaznacz wszystko”, aby wybrać „TestNG”, jak pokazano na rysunku.

Step 5 - Kliknij „Dalej”, aby kontynuować.

Step 6 - Przejrzyj wybrane pozycje i kliknij „Dalej”.

Step 7 - „Zaakceptuj umowę licencyjną” i kliknij „Zakończ”.

Step 8 - TestNG rozpocznie instalację, a postęp będzie pokazany w następujący sposób.

Step 9- Pojawia się ostrzeżenie o zabezpieczeniach, ponieważ nie można ustalić ważności oprogramowania. Kliknij OK'.

Step 10- Instalator wyświetla monit o ponowne uruchomienie Eclipse, aby zmiany odniosły skutek. Kliknij „Tak”.

Adnotacje w TestNG

Adnotacje zostały formalnie dodane do języka Java w JDK 5 i TestNG zdecydował się użyć adnotacji do adnotacji klas testowych. Poniżej przedstawiono niektóre zalety korzystania z adnotacji. Więcej o TestNG można znaleźćhere

  • TestNG identyfikuje metody, którymi jest zainteresowany, wyszukując adnotacje. Dlatego nazwy metod nie są ograniczone do żadnego wzorca ani formatu.

  • Do adnotacji możemy przekazać dodatkowe parametry.

  • Adnotacje są silnie wpisane, więc kompilator od razu oznaczy wszelkie błędy.

  • Klasy testowe nie muszą już niczego rozszerzać (na przykład TestCase, dla JUnit 3).

Sr.No. Adnotacja i opis
1

@BeforeSuite

Metoda z adnotacjami zostanie uruchomiona tylko raz przed uruchomieniem wszystkich testów w tym pakiecie.

2

@AfterSuite

Metoda z adnotacjami zostanie uruchomiona tylko raz po wykonaniu wszystkich testów w tym pakiecie.

3

@BeforeClass

Metoda z adnotacjami zostanie uruchomiona tylko raz przed wywołaniem pierwszej metody testowej w bieżącej klasie.

4

@AfterClass

Metoda z adnotacjami zostanie uruchomiona tylko raz po uruchomieniu wszystkich metod testowych w bieżącej klasie.

5

@BeforeTest

Metoda z adnotacjami zostanie uruchomiona przed uruchomieniem jakiejkolwiek metody testowej należącej do klas wewnątrz tagu <test>.

6

@AfterTest

Metoda z adnotacjami zostanie uruchomiona po uruchomieniu wszystkich metod testowych należących do klas wewnątrz tagu <test>.

7

@BeforeGroups

Lista grup, dla których ta metoda konfiguracji będzie działać wcześniej. Ta metoda jest gwarantowana na krótko przed wywołaniem pierwszej metody testowej należącej do którejkolwiek z tych grup.

8

@AfterGroups

Lista grup, po których będzie działać ta metoda konfiguracji. Ta metoda zostanie uruchomiona wkrótce po wywołaniu ostatniej metody testowej należącej do którejkolwiek z tych grup.

9

@BeforeMethod

Opisana metoda zostanie uruchomiona przed każdą metodą testową.

10

@AfterMethod

Opisana metoda zostanie uruchomiona po każdej metodzie testowej.

11

@DataProvider

Oznacza metodę jako dostarczającą dane dla metody testowej. Metoda z adnotacjami musi zwracać Object [] [], w którym do każdego obiektu [] można przypisać listę parametrów metody testowej. Metoda @Test, która chce odbierać dane od tego dostawcy danych, musi używać nazwy dostawcy danych równej nazwie tej adnotacji.

12

@Factory

Oznacza metodę jako fabrykę, która zwraca obiekty, które będą używane przez TestNG jako klasy Test. Metoda musi zwracać Object [].

13

@Listeners

Definiuje słuchaczy w klasie testowej.

14

@Parameters

Opisuje sposób przekazywania parametrów do metody @Test.

15

@Test

Oznacza klasę lub metodę jako część testu.

Konfiguracja TestNG-Eclipse

Step 1 - Uruchom Eclipse i utwórz „Nowy projekt Java”, jak pokazano poniżej.

Step 2 - Wpisz nazwę projektu i kliknij „Dalej”.

Step 3 - Przejdź do zakładki „Biblioteki” i dodaj plik JAR serwera zdalnego sterowania Selenium, klikając „Dodaj zewnętrzne pliki JAR”, jak pokazano poniżej.

Step 4- Dodany plik JAR jest pokazany tutaj. Kliknij „Dodaj bibliotekę”.

Step 5- Otworzy się okno dialogowe „Dodaj bibliotekę”. Wybierz „TestNG” i kliknij „Dalej” w oknie dialogowym „Dodaj bibliotekę”.

Step 6 - Dodana biblioteka „TestNG” zostaje dodana i jest wyświetlana, jak pokazano poniżej.

Step 7 - Po utworzeniu projektu struktura projektu wyglądałaby tak, jak pokazano poniżej.

Step 8 - Kliknij prawym przyciskiem folder „src” i wybierz Nowy >> Inne.

Step 9 - Wybierz „TestNG” i kliknij „Dalej”.

Step 10 - Wybierz nazwę „folderu źródłowego” i kliknij „OK”.

Step 11 - Wybierz „Nazwę pakietu”, „nazwę klasy” i kliknij „Zakończ”.

Step 12 - Zostanie wyświetlony eksplorator pakietów i utworzona klasa.

Pierwszy test w TestNG

Teraz zacznijmy pisać skrypty za pomocą TestNG. Skorzystajmy z tego samego przykładu, którego użyliśmy do zrozumienia WebDriver. Skorzystamy z aplikacji demonstracyjnej www.calculator.net i wykonamy kalkulator procentowy.

W poniższym teście zauważysz, że NIE ma głównej metody, ponieważ testNG będzie sterować przepływem wykonywania programu. Po zainicjowaniu sterownika wykona metodę „@BeforeTest”, po której nastąpi „@Test”, a następnie „@AfterTest”. Należy pamiętać, że w klasie może istnieć dowolna liczba adnotacji „@Test”, ale „@BeforeTest” i „@AfterTest” mogą pojawić się tylko raz.

package TestNG;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;

import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class TestNGClass {
   WebDriver driver = new FirefoxDriver();
   
   @BeforeTest
   public void launchapp() {
      // Puts an Implicit wait, Will wait for 10 seconds before throwing exception
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
      
      // Launch website
      driver.navigate().to("http://www.calculator.net");
      driver.manage().window().maximize();
   }
   
   @Test
   public void calculatepercent() {
      // Click on Math Calculators
      driver.findElement(By.xpath(".//*[@id='menu']/div[3]/a")).click();
      
      // Click on Percent Calculators
      driver.findElement(By.xpath(".//*[@id='menu']/div[4]/div[3]/a")).click();
      
      // Enter value 10 in the first number of the percent Calculator
      driver.findElement(By.id("cpar1")).sendKeys("10");
      
      // Enter value 50 in the second number of the percent Calculator
      driver.findElement(By.id("cpar2")).sendKeys("50");
      
      // Click Calculate Button
      driver.findElement(By.xpath(".//*[@id='content']/table/tbody/tr/td[2]/input")).click();
      
      // Get the Result Text based on its xpath
      String result =
         driver.findElement(By.xpath(".//*[@id='content']/p[2]/span/font/b")).getText();
      
      // Print a Log In message to the screen
      System.out.println(" The Result is " + result);
      
      if(result.equals("5")) {
         System.out.println(" The Result is Pass");
      } else {
         System.out.println(" The Result is Fail");
      }
   }
   
   @AfterTest
   public void terminatetest() {
      driver.close();
   }
}

Wykonanie

Aby wykonać, kliknij prawym przyciskiem myszy utworzony plik XML i wybierz „Uruchom jako” >> „TestNG Suite”

Analiza wyników

Dane wyjściowe są przesyłane do konsoli i wyglądają tak, jak pokazano poniżej. Dane wyjściowe konsoli zawierają również podsumowanie wykonania.

Wynik TestNG można również zobaczyć na innej karcie. Kliknij przycisk „Widok raportu HTML”, jak pokazano poniżej.

Wynik HTML zostanie wyświetlony, jak pokazano poniżej.