Postman test – Snippets – 2024

Postman

Loading

Postman test – Snippets – 2024 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ę.

Sprawdzanie typu danych w odpowiedzi Weryfikujemy, czy dane zwrócone w odpowiedzi mają określony typ, na przykład czy pole age jest liczbą:

pm.test("Age is a number", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.age).to.be.a('number');
});

Sprawdzenie długości tablicy Testujemy, czy tablica zwrócona w odpowiedzi zawiera określoną liczbę elementów:

pm.test("Array length is correct", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.arrayField).to.have.lengthOf(5);
});

Weryfikacja zawartości tablicy Sprawdzamy, czy tablica zawiera określony element:

pm.test("Array contains specific element", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.arrayField).to.include('expectedElement');
});

Sprawdzanie unikalności odpowiedzi Testujemy, czy każdy element w tablicy jest unikalny:

pm.test("Array elements are unique", function () {
var jsonData = pm.response.json();
var allUnique = new Set(jsonData.arrayField).size === jsonData.arrayField.length;
pm.expect(allUnique).to.be.true;
});

Testowanie wartości numerycznych Sprawdzamy, czy liczbowe wartości mieszczą się w określonym przedziale:

pm.test("Numeric value is within range", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.numericValue).to.be.within(10, 100);
});

Sprawdzenie struktury obiektu Weryfikujemy, czy obiekt ma określone klucze:

pm.test("Object has required keys", function () {
var jsonData = pm.response.json();
pm.expect(jsonData).to.have.all.keys('key1', 'key2', 'key3');
});

Weryfikacja nagłówków odpowiedzi Testujemy, czy odpowiedź zawiera określone nagłówki:

pm.test("Required headers are present", function () {
pm.expect(pm.response.headers.has("X-Custom-Header")).to.be.true;
pm.expect(pm.response.headers.has("Authorization")).to.be.true;
});

Testowanie zachowania przy błędnych danych Sprawdzamy, jak system reaguje na błędne dane:

pm.test("Error code is returned for invalid input", function () {
pm.expect(pm.response.code).to.be.oneOf([400, 404]);
});

Zapisywanie danych do zmiennych środowiskowych Ustawianie wartości z odpowiedzi jako zmiennej środowiskowej:

pm.test("Set response value as environment variable", function () {
var jsonData = pm.response.json();
pm.environment.set('userId', jsonData.user.id);
});

Testowanie wartości daty/czasu Sprawdzanie, czy wartość daty/czasu jest poprawna:

pm.test("Date is in correct format", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.dateField).to.match(/^20\d\d-\d\d-\d\d$/);
});

Testowanie zakresu dat Weryfikujemy, czy data znajduje się w określonym zakresie:

pm.test("Date is within range", function () {
var jsonData = pm.response.json();
var date = new Date(jsonData.dateField);
var startDate = new Date('2023-01-01');
var endDate = new Date('2023-12-31');
pm.expect(date).to.be.within(startDate, endDate);
});

Walidacja złożonej struktury JSON Sprawdzamy, czy złożony obiekt JSON ma określoną strukturę i wartości:

pm.test("Complex JSON structure validation", function () {
var jsonData = pm.response.json();
pm.expect(jsonData).to.have.keys(['user', 'details']);
pm.expect(jsonData.user).to.have.all.keys('id', 'name', 'email');
pm.expect(jsonData.details).to.have.any.keys('address', 'phone');
});

Sprawdzenie zagnieżdżonych tablic i obiektów Weryfikujemy zagnieżdżone struktury, takie jak tablice obiektów:

pm.test("Nested arrays and objects validation", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.users).to.be.an('array');
jsonData.users.forEach(user => {
pm.expect(user).to.have.keys(['id', 'name', 'roles']);
pm.expect(user.roles).to.be.an('array').that.includes('user');
});
});

Sprawdzanie odpowiedzi zależnie od innych danych Testowanie wartości w odpowiedzi w zależności od danych z innego źródła (np. zmiennej środowiskowej):

pm.test("Response validation based on environment variable", function () {
var expectedName = pm.environment.get("expectedName");
var jsonData = pm.response.json();
pm.expect(jsonData.name).to.eql(expectedName);
});

Testowanie asynchronicznych żądań Sprawdzanie odpowiedzi z asynchronicznego żądania, na przykład w celu uzyskania danych potrzebnych do kolejnego testu:

pm.sendRequest("https://api.example.com/data", function (err, res) {
pm.test("Asynchronous request test", function () {
pm.expect(err).to.be.null;
pm.expect(res).to.have.status(200);
var data = res.json();
pm.expect(data).to.have.property('key');
});
});

Sprawdzanie wartości w tablicy obiektów za pomocą forEach W tym teście, iterujemy przez tablicę obiektów i sprawdzamy, czy każdy obiekt zawiera poprawne id i name:

pm.test("Each object in array has valid id and name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData).to.be.an('array');

jsonData.forEach(item => {
pm.expect(item.id).to.be.a('number');
pm.expect(item.name).to.be.a('string');
// Dodatkowe weryfikacje, jeśli potrzebne
// na przykład sprawdzenie formatu lub zakresu id
pm.expect(item.id).to.be.above(0);
// oraz pewnego wzorca dla name
pm.expect(item.name).not.to.be.empty;
});
});

PostBot

Warto również wspomnieć o narzędziu jakim jest PostBot, które może dodatkowo ułatwić proces automatyzacji testów w Postmanie. PostBot to narzędzie AI, które pomaga w tworzeniu i optymalizacji testów API. Dostarcza inteligentne sugestie i usprawnienia w oparciu o analizę istniejących skryptów testowych. Jest to szczególnie przydatne w skomplikowanych scenariuszach testowych, gdzie zautomatyzowana pomoc może znacząco przyspieszyć pracę.

Jednakże, niezależnie od zaawansowanych narzędzi takich jak PostBot, kluczowe jest posiadanie solidnych podstaw w zakresie testowania API. Dodatkow zrozumienie mechanizmów działania narzędzi takich jak Postman. Podstawowa wiedza na temat protokołów HTTP, struktury JSON, a także umiejętność pisania prostych skryptów testujących jest niezbędna do efektywnego wykorzystania pełnego potencjału Postmana i narzędzi pokrewnych.

Pamiętaj, że narzędzia takie jak Postman są tylko tak skuteczne, jak osoba, która ich używa. Dlatego inwestycja w naukę i rozwijanie swoich umiejętności w zakresie testowania API zawsze będzie procentować w dłuższej perspektywie. Umożliwia tworzenie bardziej efektywnych, dokładnych i niezawodnych testów.

Podsumowanie

Postman test – Snippets – 2024 to kolejny 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.