Druga część omówienia projektu testowego dotyczyć będzie drugiej grupy testów, a będą to testy płatności. W tej lekcji pokażę Ci między innymi jak napisałam testy płatności dla użytkownika, który się nie chce rejestrować, dla takiego, który się rejestruje oraz dla takiego, który miał już wcześniej konto i chce się na nie zalogować. Sprawdzimy też podstawową walidację na polach formularza.
Przydatne linki
Artykuł z przykładami użycia klasy Calendar w Javie.
Hej!
1) Wykonując test z asercją porównującą daty mam problem z niezgodnością formatu daty, otrzymuję poniższy wynik:
Date on the summary is not correct. Expected: Sierpień 21, 2020 but was: 21 sierpnia, 2020 ==> expected: but was:
Comparison Failure:
Expected :Sierpień 21, 2020
Actual :21 sierpnia, 2020
Kombinowałem ze zmianą nazw miesięcy w tablicy monthNames na odpowiednio {"stycznia", "lutego" ... } oraz zamianą pozycji MONTH i DAY_OF_MONTH na odpowiednio MONTH i DAY_OF_MONTH, jak poniżej:
I otrzymuję wtedy wyjątek: java.lang.ArrayIndexOutOfBoundsException: 21
Jak poradzić sobie z tym? 🙂
2) Mam pytanie w kwestii dobrych praktyk w pisaniu wiadomości zwracanej przy nieudanej asercji. Czy warto zawsze dodawać w wiadomości informację o tym jaki był spodziewany wynik i jaki został otrzymany? Chyba we wszystkich przypadkach taką informację mamy w tej samej linijce w zdaniu poprzedzającym zredagowaną przez nas wiadomość.
3) Czy jest jakaś różnica w wykonywaniu asercji jeżeli jest ona napisana bez "Assertions."? Widzę w Twoim kodzie, że czasami jest od razu assertTrue czy assertEquals z pominięciem "Assertions.".
Halko! Co do pierwszego pytania to przyjrzyj się [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.
Dzięki, poradziłem sobie z tym :). Mam jeszcze problem z usuwaniem konta - ani Twój ani mój kod nie sprawdza się za każdym razem, 2-3 z 5 prób kończą się sukcesem. Mam wrażenie, że wait.until(ExpectedConditions.alertIsPresent()); nie działa doskonale. Gdy roboczo wrzucam w następnej linii po tym wait'cie Thread.sleep(3000); wtedy zawsze konto usuwa się poprawnie. Jak można rozwiązać to w inny sposób?
Halko! Dobrze, że sobie poradziłeś. Co do Twoje [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.
Problem w tym, że nie rzuca (moim zdaniem) żadnym pomocnym błędem do konsoli. Wykonując buyOneProductAndSignUpTest() ileś razy z rzędu w końcu jest fail, na stronie widoczna jest informacja o tym, że konto o podanym adresie e-mail jest już zarejestrowane. Oczywistym wnioskiem jest, że nie zadziałała metoda deleteMyAccount(), ale na ten temat informacji w konsoli nie ma :/.
W konsoli znajduję tylko informację o tym że nie można było namierzyć i kliknąć w myAccountButton. Treść:
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"li.woocommerce-MyAccount-navigation-link--orders>a"}
Wycofuję to co napisałem wcześniej o zabiegu z Thread.sleep'em, niestety za którymś razem, dokładnie w ten sam sposób co powyżej, test wyłożył się. A próbowałem to zrobić tak:
Całość mojego kodu poniżej:
Proszę o pomoc :). Przy okazji, czy da się coś zrobić żeby wszystkie testy w danej klasie uruchamiały się 5 razy?
Halko! No to odpowiedź nasuwa się sama, musisz r [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.