• 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 6. Zadanie: tworzenie i pobieranie obiektów

Strona główna > Kursy > Testy API w REST Assured > API w REST Assured 6. Zadanie: tworzenie i pobieranie obiektów

W tym zadaniu poćwiczymy to, co już poznaliśmy w poprzednich lekcjach, a będą to metody POST i GET. Obie z tych metod wykonamy w tym zadaniu wywołując poznane już metody w REST Assured.

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"));

W idealnym świecie

W idealnym świecie ten test raczej rozbilibyśmy raczej na dwa różne testy. W jednym potwierdzalibyśmy, że obiekt się stworzył na podstawie tego, co dostalibyśmy w odpowiedzi na naszego POSTa. W drugim testowalibyśmy niezależnie pobieranie obiektów korzystając pewnie z zawsze takiej samej bazy danych. Piszę „raczej”, bo w przypadku odpowiedzi z POSTa nadal nie wiemy np. że dana wartość realnie zmieniła się w bazie. Nie dalibyśmy też prawdopodobnie kilku różnych asercji w środku zarówno po POST jak i po GET. Ponieważ realia naszej pracy nie zawsze osadzone są w idealnym świecie (a najczęściej nie są), może się zdarzyć, że w swojej pracy będziesz pisać podobne testy jak ten w dzisiejszym zadaniu. Natomiast jeżeli będzie możliwość testować tworzenie i pobieranie obiektów osobno, to polecam właśnie takie podejście.

Zadanie: metody POST i GET

Polecenie

Napisz test (tak, jeden test), w którym stworzysz nowy produkt o nazwie „Test Me 123”. Następnie dobierz się za pomocą API do tego stworzonego produktu i potwierdź po pierwsze, że możesz ten produkt pobrać, a po drugie, że ma prawidłową nazwę. Na koniec upewnij się jeszcze, że produkt ten występuje też na liście wszystkich produktów.

Rozwiązanie

Lepiej nie podglądać przed rozwiązaniem zadania ⚠️

Zastanówmy się jakie dotychczas poznane elementy musimy połączyć:

  1. tworzenie produktu,
  2. pobranie ID nowo utworzonego obiektu z response’a po stworzeniu tego produktu ,
  3. pobranie pojedynczego obiektu i potwierdzenie, że możemy go pobrać i że ma prawidłową nazwę (czy jakąkolwiek inną informację o tym produkcie, której się spodziewamy),
  4. pobranie listy produktów (pamiętając o parametrach) i sprawdzenie, czy gdzieś w nich pojawił się oczekiwany produkt.

Przypominam, że podstawowym sprawdzeniem odpowiedzi jest jego kod. Jeśli kod odpowiedzi nie jest taki, jakiego się spodziewamy, to najprawdopodobniej nie ma sensu sprawdzać dalej. Więc zawsze napisz asercję dla kodu odpowiedzi.

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. Stanley92 napisał

    10 lutego, 2020 o 8:40 pm

    Witajcie,
    próbuję podać na wszelkie możliwe sposoby w body jsona nazwę zmiennej zadeklarowanej wyżej, jednak za każdym razem dostaję 400 zamiast 201. Czy da się jakoś "podciągnąć" zmienne pod jsona?

      private String products = "products";
        private String nameOfProduct = "Test Me 1231";
    
        @Test
        public void newProduct() {
            Response response = given()
                    .port(80)
                    .auth()
                    .oauth(user, pass, "", "")
                    .contentType("application/json")
                    .body("{\"name\":" + nameOfProduct + "}")
    
    
                    .when()
                    .post(url + products);
    
            Assertions.assertEquals(201, response.statusCode());
            String createId = response.jsonPath().get("id").toString();
            Assertions.assertEquals(nameOfProduct, response.jsonPath().get("name"));
    Odpowiedz
    • Kuba Rosiński napisał

      11 lutego, 2020 o 12:50 pm

      Hej, wyglada mi na to, że nie masz ciapciakow (to [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      Odpowiedz
      • Stanley92 napisał

        12 lutego, 2020 o 2:57 pm

        Pomogło, szkoda, że temat "ciapków" mnie pokonał...

        Odpowiedz
  2. Mateusz Cesarz napisał

    28 lutego, 2020 o 12:38 pm

    Miałem ten sam error z integerem i stringiem we wcześniejszej lekcji i rozwiązałem go trochę inaczej: zamiast używać dodatkowej metody toString(), zamieniłem używanego przez Ciebie get() na getString() - i tu rodzi się moje pytanie: pod względem poprawności czy dobrych praktyk jest jakaś różnica?

    Odpowiedz
    • Kuba Rosiński napisał

      28 lutego, 2020 o 7:23 pm

      Ja użyłem natywnej metody Integera, a Ty RestAss [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      Odpowiedz
  3. Maciej Wróblewski napisał

    13 listopada, 2020 o 1:01 pm

    Cześć, nie wiem czy lepiej pytać na SLACK czy tutaj więc zapytam pod konkretną lekcją 🙂 W zadaniu poprosiłeś by wylistować produkty i sprawdzić czy jest w tej liście produkt który stworzyliśmy. A czy nie lepsze/szybsze rozwiązanie jest takie by właśnie skorzystać z queryParam("include", newId).
    Pytam z ciekawości. Może takie rozwiązanie niesie za sobą jakieś minusy których teraz nie dostrzegam

    Odpowiedz
    • Kuba Rosiński napisał

      13 listopada, 2020 o 3:15 pm

      Dobrze, ze pytasz pod lekcja 🙂
      Lepszym rozwiazan [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      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