Postman test – Snippets

Postman

 906 

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.