• Przejdź do głównej nawigacji
  • Przejdź do treści
  • Przejdź do głównego paska bocznego
  • Przejdź do stopki
Testelka.pl

Testelka.pl

Testelka.pl - o technologiach w testowaniu oprogramowania

  • Kursy
    • DARMOWY: Java dla testerów
    • Selenium w Javie
    • Selenium w C#
    • Testy API w REST Assured
    • Selektory CSS
    • XPath
  • Materiały na raz
  • Blog
  • O Eli
  • Zaloguj się
  • DOŁĄCZ

API w REST Assured 11. Zadanie: żądania w pętli

Strona główna > Kursy > Testy API w REST Assured > API w REST Assured 11. Zadanie: żądania w pętli

Czas na zadanie, w którym będzie po trochu wszystkiego w tym żądania w pętli, czyli użycie listy do wykonania podobnego żądania na wszystkich jej elementach.

Dokumentacja do sklepu

Po poprawnym postawieniu aplikacji dokumentację do niej znajdziesz pod localhost/fakestore/dokumentacja/. Tam też znajdziesz np. klucze potrzebne do uwierzytelnienia.

Wersja Javy

W zależności od tego której wersji Javy używasz, mogą się pojawić drobne rozbieżności w sytuacji, w których pobieramy jakąś informację z odpowiedzi metodą get(), a następnie ją „wypluwamy” w konsoli metodą println, np.:

System.out.println(response.jsonPath().get("name"));

Jeżeli nie zadziała Ci to, co pokazuję (będzie się podkreślało na czerwono i po najechaniu zobaczysz „Ambiguous method call”) możesz zamiast get() użyć metody getString():

System.out.println(response.jsonPath().getString("name"));

Zadanie: żądania w pętli

Polecenie

Ukryta treść

Nie masz aktywnej subskrypcji. Wykup subskrypcję albo zaloguj się, by móc zobaczyć pełną lekcję.

Rozwiązanie

  1. Pobrać listę (czyli GET, który robiliśmy już wiele razy). Pamiętajcie, że nasze API domyślnie zwraca 10 obiektów, więc trzeba dodać parametr, by zwróciła więcej.

    Ukryta treść

    Nie masz aktywnej subskrypcji. Wykup subskrypcję albo zaloguj się, by móc zobaczyć pełną lekcję.

  2. Stworzyć listę id (kłania się poprzednia lekcja z JSON!)

    Ukryta treść

    Nie masz aktywnej subskrypcji. Wykup subskrypcję albo zaloguj się, by móc zobaczyć pełną lekcję.

  3. Przeiterujemy się przez wszystkie id w stworzonej wcześniej liście i spróbujemy pobrać elementy o podanym id.

    Ukryta treść

    Nie masz aktywnej subskrypcji. Wykup subskrypcję albo zaloguj się, by móc zobaczyć pełną lekcję.


    Problem z tym kodzikiem jest taki, że gdybyśmy mieli wolno działający system, albo bardzo dużo obiektów, to nie wiemy co się dzieje i bardzo długo po prostu nie zobaczymy czy kolejne requesty są wysyłane i sprawdzane. Dlatego dodaję “logowanie” i wypisywanie który z ilu obiektów jest właśnie testowany i jak się nazywa.

    Ukryta treść

    Nie masz aktywnej subskrypcji. Wykup subskrypcję albo zaloguj się, by móc zobaczyć pełną lekcję.

Przy okazji pewnie zauważycie, że pierwsze zwracane obiekty, to te stworzone jako ostatnie (czyli kolejka FILO – First In Last Out) – przynajmniej w przypadku domyślnego sposobu listowania.

Jeśli udało się Wam osiągnąć to samo, ale z zupełnie innej strony, to pochwalcie się w komentarzach!

Pełny kod

Ukryta treść

Nie masz aktywnej subskrypcji. Wykup subskrypcję albo zaloguj się, by móc zobaczyć pełną lekcję.

Reader Interactions

Komentarze

Nie masz aktywnej subskrypcji. Wykup subskrypcję albo zaloguj się, by móc komentować.

Komentarze

  1. Wojciech Fus napisał

    31 marca, 2021 o 9:00 pm

    Cześć!
    Czy w RestAssured istnieje jakaś metoda pozwalająca zamiast listy w prosty sposób podstawić [i] w pętli for zawierającej response.jsonPath().get("id[i]"); ?
    Czy może rozwiązanie z listą jest najprostsze i nie ma sensu szukać innych sposobów rozwiązania tego typu przypadku?

    Odpowiedz
    • Kuba Rosiński napisał

      1 kwietnia, 2021 o 4:28 pm

      Odpowiadam już z wielkanocnego wywczasu, ale moim [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      Odpowiedz
  2. Wojciech Fus napisał

    1 kwietnia, 2021 o 8:19 pm

    Dzięki za podpowiedź!
    Użyłem podobnie, ale trochę inaczej niż proponowałeś: response.jsonPath().get("id["+i+"]");
    Wygląda że działa poprawnie i nic się nie wywala:

       @Test
        public void listAllPtoducts(){
    
            Response response =
                            when()
                            .get(productsEndpoint+ "?per_page=100&order=asc");
            Assertions.assertEquals(200, response.statusCode());
    
            for (int i=0; i<100; i++) {
                if (response.jsonPath().get("id["+i+"]")!=null) {
                    Assertions.assertEquals(200, response.statusCode());
                    System.out.println(" Id: " + response.jsonPath().get("id[" + i + "]") + " Nazwa: " + 
                    response.jsonPath().get("name[" + i + "]"));
                }
            }
        }
    
    Odpowiedz

Pierwszy Sidebar

LEKCJE W KURSIE

  • Lokalna aplikacja do testów za pomocą LocalWP lub XAMPP
  • Czym jest API?
  • Pierwsze zapytanie do API
  • Pierwszy test API - metoda GET
  • Tworzenie obiektów w API - metoda POST
  • Zadanie: tworzenie i pobieranie obiektów
  • Usuwanie i zmiana obiektów - metody DELETE i PUT
  • CRUD: wspólne elementy żądań
  • CRUD: PUT i PATCH oraz niezależność testów
  • Jak szperać w JSONie?
  • Zadanie: żądania w pętli
  • Asercje
  • Serializacja i deserializacja
  • Zadanie: serializacja i deserializacja
  • Organizacja projektu testowego
  • Zadanie: organizacja projektu testowego

Footer

Elzbieta Natalia Sadel
Av. de las Postas 21 6 C
29014 Málaga
Hiszpania
NIF: Y7882076J

Zostań trenerem!

Regulamin
Polityka prywatności
Polityka wsparcia w ramach członkostwa

Koszulki i torby dla testerów

Pomoc
Kontakt

Poskładane z 💛 przez Automatela.pl