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.

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
- Kliknij opcję „emailable-report.html”
- Kliknij opcję przeglądarki internetowej
Poniższy zrzut ekranu pokazuje otwieranie pliku emailable-report.html z folderu test-output.
Raporty wyjściowe w TestNG raportowanie będzie wyglądać jak poniżej, jeśli obie klasy zostaną zaliczone:
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:
Podobnie wynik dla klasy DemoA będzie wyglądał następująco:
Metoda 2: indeks.html
- Kliknij prawym przyciskiem myszy plik Index.html w katalogu projektu.
- 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.
Wynik będzie wyglądał następująco:
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:
- Reporter.log(String s);
- Reporter.log(String s, wartość logiczna logToStandardOut);
- Reporter.log(String s, poziom int);
- 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.
Dla klasy 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.
- W folderze test-output otwórz emailable-report.html. Będzie wyglądać tak:
Podobnie będziesz mieć również wyjście dla projektu Demo B.
- W folderze test-output otwórz plik index.html. Będzie wyglądał tak:
Kliknij wynik reportera. Otworzy się informacje o logowaniu, cokolwiek zapisano w metodach testowych.
Kliknij „Times”. Pokaże, ile czasu zajęło uruchomienie metody testowej obecnej na zajęciach TestNG narzędzia raportowania.
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.












