Postman test – Snippets to post pokazujący listę różnych testów z których możecie korzystać wraz z tworzeniem testów na Postmanie. Opiszemy krótko kilka przydatnych przypadków, którymi możemy potwierdzić zwracane informację z ramach naszych zapytań. Poznaj podstawowe zasady działania aplikacji. Dla osób początkujących prośba o zapoznanie się z artykułem o metodach HTTP.
Wstęp
Korzystając z Postmana w ramach swojej pracy testerskiej możecie robić coś więcej aniżeli pojedyncze wysyłanie requestów poprzez GETa, POSTa, czy usunąć element poprzez DELETE. Dzięki zakładce Tests, możemy weryfikować wiele elementów w sposób automatyczny. Takie podejście pozwoli nam na wykorzystywanie testów w ramach testów regresji, tworząc kolekcje i uruchamiając serię testów – o czym będzie w innym wpisie.
Dodać należy, że po pm.test zawarte będzie w cudzysłowie nazwa testu, która potem będzie wskazana gdy będziemy uruchamiać kolekcję.
Status Code
Weryfikacja statusu odpowiedzi to chyba podstawa. Warto zatem dodać taki test.
pm.test("Status code is 200", function () { pm.response.to.have.status(200); });
pm.test("Successful request", () => { pm.expect(pm.response.code).to.be.oneOf([200,201]); });
Sprawdzanie wartości
Dzięki tym przypadkom możemy weryfikować zwracane dane – jeżeli jest coś zakodowane w sposób na stałe.
Przykładem może być wygasanie tokena.
pm.test("Check expires token", function () { var jsonData = pm.response.json(); pm.expect(jsonData.expires_in).to.eql(3600); });
Możemy też weryfikować czy dany element zwraca konkretną nazwę.
pm.test("Check some value in response", () => { const responseJson = pm.response.json(); pm.expect(responseJson.name).to.eql('Stefan'); });
Możemy też weryfikować czy dany element zwraca jedną z nazw.
pm.test("Check one oneOf elements", () => { var jsonData = pm.response.json(); pm.expect(jsonData.name).to.be.oneOf(["Stefan", "Janek"]); });
Weryfikacja czy w teście dobrze sprawdzamy ścieżkę
Czasami możemy nie mieć pewności, czy w ramach testu sprawdzamy dokładnie to co chcemy. Z pomocą przychodzą nam polecania printujące odpowiedzi w Postmanowej konsoli.
console.log(pm.response.json().name[0]);
Czas odpowiedzi
Testując API z wykorzysteniem Postmana, możemy określić czas odpowiedzi w jakim dany endpoint powinien odpowiedzieć lub wykonać daną czynność.
pm.test("Response time is less than 500ms", function () { pm.expect(pm.response.responseTime).to.be.below(500); });
Cookiesy
W ramach naszych testów możemy też weryfikować cookiesy.
pm.test("Cookie JSESSIONID is present", () => { pm.expect(pm.cookies.has('JSESSIONID')).to.be.true; }); pm.test("Cookie isLoggedIn has value 1", () => { pm.expect(pm.cookies.get('isLoggedIn')).to.eql('1'); });
Nulle
W ramach testów możemy mieć konieczność weryfikacji, czy poszczegolne endpointy nie zwracają nulla w poszczególnych odpowiedziach.
pm.test("Check ID is not null value", function () { var jsonData = pm.response.json(); pm.expect(jsonData.id).not.equals(null) }); pm.test("ID is not contains null value", function () { var jsonData = pm.response.json(); pm.expect(jsonData.id).not.contains(null) });
Może być też tak, że oczekujemy nulla
pm.test("Check ID is null value", function () { var jsonData = pm.response.json(); pm.expect(jsonData.id).to.be.null });
Sprawdzenie zwracanych danych w body
Tutaj możemy sprawdzić dane zwracane w body, czy to tekst czy też wartość w body.
pm.test("Body matches string", function () { pm.expect(pm.response.text()).to.include("string_you_want_to_search"); }); pm.test("Body is correct", function () { pm.response.to.have.body("response_body_string"); });
Stosując też inne metody prócz GETa, możemy zweryfikować np. odpowiedź o stworzeniu elementu.
pm.test("Status code name has string", function () { pm.response.to.have.status("Created"); });
Gdy w teście pobierzemy jakąś wartość jako zmienną, to później możemy zweryfikować jej zwracalność w innym teście.
pm.test("Response property matches environment variable", function () { pm.expect(pm.response.json().name).to.eql(pm.environment.get("name")); });
Ustawienie zwróconej danej jako zmiennej
W ramach testów może dojść do sytuacji w której będziemy mieli konieczność pobrania jakiejś danej w jednym teście w celu wykorzystania jej w kolejnym. Sytuacja taka jest przydatna szczególnie gdy testujemy coś w ramach większej grupy testów. Poniższy przykład np. w ramach logowania – pobiera token – indywidualny dla danej sesji. Następnie ustawiamy go jako zmienną o nazwie token. W późniejszym czasie wykorzystujemy go jako zmienną {{token}} w innych miejscach testu. O takich przypadkach będzie w kolejnych wpisach, gdzie krok po kroku wyjaśnię jak działa ten mechanizm.
BodyData = JSON.parse(responseBody); value = BodyData.access_token console.log(value) pm.environment.set('token', value);
Schema
Niniejszy test pozwala nam możliwość weryfikacji struktury zwracanego JSONa.
var schema = { "items": { "type": "boolean" } }; var data1 = [true, false]; var data2 = [true, 123]; pm.test('Schema is valid', function () { pm.expect(tv4.validate(data1, schema)).to.be.true; pm.expect(tv4.validate(data2, schema)).to.be.true; });
Response header
W ramach naszych testów możemy weryfikować też headera.
pm.test("Content-Type is present", function () { pm.response.to.have.header("Content-Type"); }); pm.test("Content-Type is present", function () { pm.expect(pm.response.headers.get("Content-Type")).to.eql("application/json"); }); pm.test("Check header connetion is present", function () { pm.expect(pm.response.headers.get("Connection")).to.eql("Keep-Alive"); });
Usunięcie zmiennych globalnych
Istnieje możliwość usunięcia pewnych zmiennych globalnych w ramach testów lub wszystkich.
pm.globals.unset('myVariable'); pm.globals.clear();
Podsumowanie
Postman test – Snippets to drugi wpis nawiązujący do Postmana. Postman z racji swojej popularności, będzie miał serię większej ilości artykułów, które będą sukcesywnie powstawać. Ponadto w zakresie snippetów będziemy z czasem poszerzać niniejszy post, bądź publikować kolejny z innymi, bardziej zaawansowanymi testami. W dziale inne narzędzia opisujemy wiele innych przydatnych narzędzi, które być może pomogą Wam w bieżącej pracy.