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.