TestNG Generowanie raportów w Selenium: Jak wygenerować?

⚡ Inteligentne podsumowanie

TestNG Raporty to domyślne pliki wyników HTML, które TestNG zapisuje dane w folderze test-output po każdym uruchomieniu, pokazując, które przypadki testowe zostały zaliczone, niezaliczone lub pominięte, a także wszelkie logi Reportera.

  • 🔘 Domyślne wyjście: Każdy TestNG run tworzy folder z wynikami testu bez żadnego dodatkowego kodu.
  • Dwa widoki HTML: emailable-report.html podsumowuje wyniki, index.html zawiera linki do widoków szczegółowych.
  • Dzienniki reportera: Reporter.log() zapisuje niestandardowe wiadomości bezpośrednio w wygenerowanym raporcie.
  • 🧪 Liczba apartamentów: Uruchomienie pliku testng.xml grupuje kilka klas w jeden skonsolidowany raport.
  • 🛠️. Dostosowywanie: ITestListener i IReporter pozwalają zespołowi na zbudowanie własnego formatu raportu.
  • 📊 Poza domyślnymi ustawieniami: ExtentReports i Allure dodają wykresy, historię i załączniki zrzutów ekranu.

TestNG generowanie raportów w Selenium

Jakie są TestNG Raporty?

TestNG Raporty to domyślne raporty HTML generowane po wykonaniu przypadków testowych przy użyciu TestNG. Raporty te pomagają zidentyfikować informacje o przypadkach testowych i statusie projektu. TestNG raporty w Selenium zapisz trzy wyniki dla każdej metody testowania — zaliczony, niezaliczony i pominięty — dzięki czemu będziesz mógł sprawdzić dane dotyczące przypadków testowych na pierwszy rzut oka.

Generowanie raportów jest bardzo ważne zarówno podczas testów automatycznych, jak i testów ręcznych.

  • Patrząc na wynik, możesz łatwo określić, ile przypadków testowych zostało pomyślnie zaliczonych, nieudanych lub pominiętych.
  • Przeglądając raport dowiesz się jaki jest status projektu.

Selenium WebDriver służy do automatyzacji aplikacji internetowej, jednak nie generuje samodzielnie żadnych raportów.

  • TestNG wygeneruje raport domyślny.
  • Po uruchomieniu pliku testng.xml i odświeżeniu projektu otrzymasz folder z wynikami testu, w którym znajdują się dane wyjściowe raportu. TestNG.
  • Kliknij prawym przyciskiem myszy plik emailable-report.html i wybierz opcję Otwórz za pomocą przeglądarki internetowej.

Uwaga: opisane tutaj zachowanie pozostaje niezmienione TestNG 7.x. Wydania z TestNG Od wersji 7.6 wymagany jest JDK 11 lub nowszy, więc w przypadku starszych projektów może być konieczne podniesienie poziomu JDK przed wygenerowaniem raportów.

Rodzaje TestNG Raporty w folderze wyników testowych

Przed otwarciem jakiegokolwiek pliku warto sprawdzić, co tak naprawdę zawiera folder test-output. TestNG zapisuje kilka artefaktów przy każdym przebiegu, a każdy z nich odpowiada na inne pytanie.

Plik lub folder Co zawiera Kiedy jest to przydatne
index.html Raport dotyczący lądowania, który zawiera linki do wyników, grup, czasów i widoków wyjściowych reportera. Przyjrzyjmy się szczegółowo jednemu przebiegowi.
raport-do-wysłania-e-mailem.html Pojedyncza, niezależna strona podsumowująca metody zakończone powodzeniem, niepowodzeniem i pominięciem dla każdej klasy. Udostępnianie wyników osobom, które nie otwierają projektu.
wyniki-testowania.xml Czytelny dla maszyny plik XML zapisywany przez wbudowany moduł raportowania XML, ze statusem i czasem trwania dla każdej metody. Dostarczanie danych do pulpitu nawigacyjnego lub niestandardowego parsera.
raporty czerwcowe JUnitPliki XML w formacie - jeden na klasę testową. Każda wtyczka CI odczytująca JUnit format wyniku.
testng-failed.xml Wygenerowany plik pakietu, który zawiera listę tylko tych metod, które nie zadziałały. Ponowne uruchomienie tylko błędów, a nie całego pakietu.

Następnie ten samouczek otworzy dwa pliki HTML, dlatego poniższy przewodnik rozpocznie się od pliku emailable-report.html.

Jak generować raporty w Selenium

Metoda 1: emailable-report.html

  1. Kliknij opcję „emailable-report.html”
  2. Kliknij opcję przeglądarki internetowej

Poniższy zrzut ekranu pokazuje otwieranie pliku emailable-report.html z folderu test-output.

Wybór pliku emailable-report.html w TestNG folder wyjściowy testowy

Raporty wyjściowe w TestNG raportowanie będzie wyglądać jak poniżej, jeśli obie klasy zostaną zaliczone:

TestNG raport wysyłany e-mailem pokazujący zaliczone klasy testów DemoA i DemoB

Rozważ scenariusz, w którym celowo nie zaliczasz przypadku testowego, tj. klasy DemoB. Następnie przekonwertuj obie klasy do pliku pakietu testng.xml i uruchom go. Następnie wynik będzie wyglądał tak. Pokaże nieudane przypadki testowe.

Oto wynik dla klasy DemoB:

Raport do wysłania e-mailem, w którym wyróżniono celowo nieudany przypadek testowy DemoB

Podobnie wynik dla klasy DemoA będzie wyglądał następująco:

Podsumowanie raportu wysyłanego e-mailem dla klasy DemoA

Metoda 2: indeks.html

  1. Kliknij prawym przyciskiem myszy plik Index.html w katalogu projektu.
  2. Wybierz opcję otwórz za pomocą przeglądarki internetowej. Wyświetli wynik w następującej kolejności.

Zrzut ekranu poniżej pokazuje otwieranie pliku index.html z katalogu projektu.

Otwieranie pliku index.html z katalogu projektu w przeglądarce internetowej

Wynik będzie wyglądał następująco:

TestNG strona docelowa raportu index.html zawierająca listę widoków wyników uruchomienia

Metoda 3: Klasa Reportera

Wraz z tymi TestNG metod generowanych przez raporty, możesz użyć pliku object.properties do przechowywania dzienników wygenerowanych przez system, a także dzienników wygenerowanych przez użytkownika. Jednak jednym z najprostszych sposobów przechowywania informacji z dziennika podczas testowania jest użycie Klasa reportera.

Reporter.zaloguj się Selenium jest klasą obecną w TestNG dla Selenium raportowanie. Zapewnia 4 różne metody przechowywania informacji dziennika:

  1. Reporter.log(String s);
  2. Reporter.log(String s, wartość logiczna logToStandardOut);
  3. Reporter.log(String s, poziom int);
  4. Reporter.log(String s, poziom int, wartość logiczna logToStandardOut);

Drugi argument decyduje, czy wiadomość ma zostać wysłana na konsolę i do raportu, natomiast argument poziomu kontroluje poziom szczegółowości, z jakim wiadomość ma być przechowywana.

Przykład:

Utwórz dwie klasy, takie jak DemoA i DemoB, a następnie napisz poniższy kod wewnątrz klas.

Dla klasy DemoA;

  • Code dla DemoA wyjaśniono już powyżej. Tutaj używasz log klasy Reporter. (Aby zaimplementować własną klasę raportowania, klasa musi implementować interfejs org.testng.IReporter.)
  • Metoda log jest metodą statyczną klasy Reporter. Dostęp do tej metody uzyskujesz zatem poprzez klasę Reporter.
  • Metoda log służy do przechowywania informacji dziennika zapisanych wewnątrz programu. Przeglądając informacje w dzienniku, z łatwością dowiesz się, gdzie dokładnie wykonywanie programu zostaje zatrzymane.

Poniższy zrzut ekranu pokazuje wywołania Reporter.log umieszczone w klasie DemoA.

Instrukcje Reporter.log zapisane w klasie testowej DemoA

Dla klasy DemoB:

Instrukcje Reporter.log zapisane w klasie testowej DemoB

  • Teraz utwórz plik testng.xml, wybierając te dwie klasy i
  • Wybierz opcję Uruchom jako i
  • Kliknij na „Konwertuj na wersję testową”.
  • Następnie uruchom plik testng.xml wybierając opcję Uruchom jako i wybierając pakiet testng.
  • Następnie odśwież projekt, otwórz folder wyjściowy testu.
  1. W folderze test-output otwórz emailable-report.html. Będzie wyglądać tak:

    Raport możliwy do wysłania e-mailem wygenerowany po uruchomieniu pakietu testng.xml DemoA i DemoB

    Podobnie będziesz mieć również wyjście dla projektu Demo B.

  2. W folderze test-output otwórz plik index.html. Będzie wyglądał tak:

    Raport index.html wygenerowany po uruchomieniu pakietu testng.xml

Kliknij wynik reportera. Otworzy się informacje o logowaniu, cokolwiek zapisano w metodach testowych.

TestNG widok wyjściowy reportera zawierający listę komunikatów zarejestrowanych przez metody testowe

Kliknij „Times”. Pokaże, ile czasu zajęło uruchomienie metody testowej obecnej na zajęciach TestNG narzędzia raportowania.

TestNG Widok czasu pokazujący, ile czasu zajęło wykonanie każdej metody testowej

Jak dostosować TestNG Raporty z ITestListener i IReporter

Powyższe trzy metody wykorzystują cokolwiek TestNG generowany domyślnie. Gdy zespół potrzebuje innego układu, dodatkowych pól lub widoku postępu na żywo, TestNG ujawnia dwa punkty rozszerzeń zamiast prosić o załatanie domyślnego raportu.

  • Odbiornik ITtestów System powiadamiany jest w czasie rzeczywistym o każdym uruchomieniu, zaliczeniu, niepowodzeniu lub pominięciu testu. Używaj go, gdy informacje muszą zostać zebrane w momencie wystąpienia zdarzenia — na przykład zrzut ekranu w przypadku niepowodzenia.
  • IReporter Jest powiadamiany jednorazowo po zakończeniu każdego pakietu i odbiera obiekty opisujące cały przebieg. Należy go używać, gdy wyjściem jest ukończony dokument, taki jak plik PDF lub niestandardowa strona HTML.

Przykład nasłuchiwania, które przekazuje każdy wynik do raportu za pośrednictwem klasy Reporter, wygląda następująco.

import org.testng.ITestListener;
import org.testng.ITestResult;
import org.testng.Reporter;

public class ReportListener implements ITestListener {

    @Override
    public void onTestSuccess(ITestResult result) {
        Reporter.log("PASSED: " + result.getName(), true);
    }

    @Override
    public void onTestFailure(ITestResult result) {
        Reporter.log("FAILED: " + result.getName(), true);
    }

    @Override
    public void onTestSkipped(ITestResult result) {
        Reporter.log("SKIPPED: " + result.getName(), true);
    }
}

Rejestracja programu nasłuchującego odbywa się w tym samym pliku pakietu testng.xml, który utworzyłeś już dla DemoA i DemoB.

<suite name="Demo Suite">
  <listeners>
    <listener class-name="ReportListener" />
  </listeners>
  <test name="Demo Test">
    <classes>
      <class name="DemoA" />
      <class name="DemoB" />
    </classes>
  </test>
</suite>

Podczas eksperymentów warto znać dwa przełączniki wiersza poleceń. -d opcja zmienia katalog, w którym zapisywane są raporty, i -usedefaultlisteners fałsz Wyłącza wbudowane reportery, aby działał tylko Twój własny odbiornik. Oba są opisane w oficjalnym TestNG rejestrowanie i dokumentowanie wyników, który dokumentuje również właściwości akceptowane przez wbudowany reporter XML.

Słuchacz rejestruje się raz, a następnie ma zastosowanie do każdej klasy w zestawie, dlatego zespoły, które prowadzą duże testowanie automatyzacji pakiety testowe zazwyczaj preferują tę metodę zamiast ręcznego dodawania wierszy dziennika do każdej metody testowania.

TestNG Raporty domyślne kontra raporty ExtentReports kontra Allure

Domyślne raporty wystarczają dla małego pakietu, ale nie zawierają historii ani wykresów. Dwie biblioteki open source są zazwyczaj dodawane, gdy pakiet się rozrasta i obie działają z… TestNG.

Zdolność TestNG domyślnym ExtentReports Raport Uroku
Wysiłek konfiguracji Brak — wygenerowane automatycznie Dodaj bibliotekę i napisz kod reportera Dodaj adapter, a następnie wygeneruj raport z wyników
Wykresy i pulpity nawigacyjne Nie Tak Tak
Zrzuty ekranu Tylko poprzez znaczniki Reporter.log Wbudowane API załączników Wbudowane API załączników
Historia i trendy uruchamiania Nie Poprzez opcjonalny komponent serwera Tak, z zapisanych poprzednich wyników
Zakres ramowy TestNG tylko Java i .NET Framework niezależny

Zacznij od domyślnych raportów, gdy pakiet jest mały. Przejdź do ExtentReports gdy interesariusze proszą o czytelne pulpity nawigacyjne i Raport Uroku Kiedy problem niestabilnej historii testów w różnych kompilacjach staje się istotny. Niezależnie od wybranej opcji, raport jest zazwyczaj publikowany przez zadanie kompilacji, co jest omówione w Jenkins ciągła integracja poradnik.

FAQ

Folder pojawia się dopiero po TestNG kończy działanie, a projekt jest odświeżany w IDE. Pusty folder zazwyczaj oznacza, że ​​klasa została uruchomiona jako zwykły Java aplikacja lub domyślne programy nasłuchujące zostały wyłączone, więc żaden reporter nie został uruchomiony.

Tak. TestNG Domyślnie zapisuje do pliku test-output. Przekaż opcję -d w wierszu poleceń lub ustaw katalog wyjściowy w konfiguracji uruchomieniowej IDE lub w ustawieniach Maven Surefire uruchamiających pakiet.

Przechwyć obraz wewnątrz metody nasłuchującej, takiej jak onTestFailure, zapisz plik obok raportu, a następnie dodaj znacznik obrazu HTML za pomocą Reporter.log. Raport renderuje znaczniki, więc obraz pojawia się obok metody, która zakończyła się niepowodzeniem.

TestNG Samo w sobie nie wysyła poczty. Zespoły zazwyczaj dołączają plik emailable-report.html z zadania kompilacji, na przykład Jenkins krok wysyłania wiadomości e-mail po kompilacji lub dodaj małą procedurę wysyłania poczty wewnątrz implementacji IReporter.

Modele sztucznej inteligencji grupują awarie według stosutracPodobieństwo, oddzielenie rzeczywistych defektów od błędów środowiskowych lub czasowych oraz uszeregowanie metod, które należy najpierw sprawdzić. Długa lista raportów do wysłania e-mailem staje się krótką, priorytetową kolejką dla zespołu.

Drugi pilot GitHub może tworzyć szkielety klas nasłuchujących, instrukcji Reporter.log i wpisów testng.xml na podstawie krótkiego komentarza. Revprzeglądaj każdą sugestię, ponieważ wygenerowane programy nasłuchujące często pomijają dokładne metody interfejsu TestNG oczekuje.

Po podłączeniu analizatora IRetryAnalyzer każda ponowna próba jest rejestrowana wraz z wynikiem końcowym. Domyślny raport pokazuje zatem każdą próbę, więc niestabilny test może zostać wyświetlony zarówno jako niepowodzenie, jak i zaliczenie w tym samym przebiegu.

Wprowadź parametr -usedefaultlisteners false w wierszu poleceń lub ustaw useDefaultListeners na false w konfiguracji Maven Surefire lub Ant. Uruchomione zostaną tylko raporty zarejestrowane jawnie, co skróci czas uruchomienia w przypadku bardzo dużych pakietów.

Podsumuj ten post następująco: