Do mojego stażu, muszę użyć TestNG i selenu do testowania aplikacji internetowej. Ale mam problem, czasami selen lub przeglądarka nie działa z jakiegoś przypadkowego powodu, więc test roboczy jest oznaczony jako "nieudany". Aby tego uniknąć, mogę użyć adnotacji @Test(invocationCount = 4, successPercentage = 25)
, a jeśli test powiedzie się jeden raz, test jest oznaczony jako "Sukces", to dobrze, ale problem polega na tym, że to rozwiązanie zwielokrotnia czas testowania o 4, to nie jest bardzo wydajne .Jak zoptymalizować testy testng i selenów?
Co mogę zrobić, aby skrócić czas testowania, to napisać regułę: "jeśli test się nie powiódł, ponownie uruchom ten test (i tylko wtedy, gdy test się nie powiódł), a jeśli zadziałał drugi, trzeci lub Czwarty raz, a następnie oznacz ten test jako "sukces" "Tak więc mogę uniknąć tych losowych błędów. Ale nie znalazłem sposobu napisania tej reguły, widziałem, że możemy dodać słuchacza, więc mamy metodę o nazwie "onTestFailure
", więc mogę coś zrobić, gdy test się nie powiedzie, ale nie wiem jak to zrobić uruchom test.
Znalazłem również testng-failed.xml, gdzie zapisano wszystkie nieudane testy, więc możemy uruchomić ten plik xml, aby ponownie uruchomić te testy, ale spowoduje to skasowanie raportu z poprzedniego pierwszego uruchomienia, ale chcę tylko, aby nieudane testy są oznaczone jako "pomyślnie", jeśli drugi bieg zakończył się pomyślnie. (Zintegrowałem testNG/selen z Jenkinsem, więc mam wykres ze wszystkimi testami, więc ta metoda nie jest bardzo dostosowana, ale ta metoda nie pomnoży czasu na testowanie przez 4 i to jest to czego chcę)
Więc jeśli masz jakieś wskazówki, jak to zrobić, byłoby bardzo miłe.
Testowałem, aby uruchomić testng-failed.xml 3 razy, a następnie wszystkie testy działają, a to nie zajmuje dużo czasu. Ale w przypadku Jenkinsa, kiedy testng-failed.xml jest uruchamiany po raz ostatni, edytuje to plik testng-result.xml, więc teraz wykres wskazuje "1 przebieg testowy, 1 sukces", ponieważ w ostatnim uruchomieniu testng uruchomił tylko ten test zakończył się niepowodzeniem 3 razy. Ta metoda spowoduje wygenerowanie wykresu z nieudanym testem, ale wszystkie testy robocze (z wyjątkiem testów przeprowadzanych po raz trzeci) nie będą wyświetlane, nie jest to dokładnie to, czego chcę ... jakaś wskazówka? – user1000499