Middle
Jak możesz zautomatyzować testy API?
sobes.tech AI
Odpowiedź od AI
Automatyzacja testowania API może być realizowana na następujące sposoby:
-
Użycie frameworków/bibliotek:
- Rest-Assured (Java): Popularna biblioteka do testowania REST API.
- Requests (Python): Prosta i potężna biblioteka do wykonywania żądań HTTP.
- SuperTest (Node.js): Biblioteka do testowania serwerów HTTP i API.
- Postman/Newman: Aplikacje z GUI i CLI do tworzenia i uruchamiania testów API.
-
Tworzenie scenariuszy testowych:
- Dla każdego endpointu określa się pozytywne i negatywne przypadki testowe.
- Scenariusze obejmują wysyłanie zapytań z różnymi parametrami, sprawdzanie statusów odpowiedzi (kody HTTP), zawartości ciała (JSON, XML itp.) i nagłówków.
-
Weryfikacja danych:
- Walidacja schematu JSON w celu sprawdzenia struktury i typów danych w odpowiedzi.
- Porównanie wartości faktycznych w odpowiedzi z oczekiwanymi.
-
Zarządzanie danymi:
- Użycie danych testowych zapisanych w plikach (JSON, CSV) lub bazach danych.
- Przygotowanie danych przed wykonaniem testu i czyszczenie po nim (jeśli jest to konieczne).
-
Integracja z systemami CI/CD:
- Konfiguracja automatycznego uruchamiania testów API przy każdej zmianie kodu lub regularnie (np. co wieczór).
- Użycie Jenkins, GitLab CI, GitHub Actions itp.
-
Raportowanie:
- Generowanie szczegółowych raportów z wynikami testów (np. Allure Framework).
Przykład użycia Rest-Assured:
import io.restassured.RestAssured;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
import static org.hamcrest.Matchers.equalTo;
public class ApiTests {
@Test
public void testGetUserById() {
// Podstawowy URL API
RestAssured.baseURI = "https://reqres.in/api";
// Wysyłanie zapytania GET
given()
.when()
.get("/users/2")
.then()
.statusCode(200) // Sprawdzanie kodu odpowiedzi
.body("data.id", equalTo(2)) // Sprawdzanie wartości w ciele odpowiedzi
.body("data.first_name", equalTo("Janet"));
}
}
Przykład użycia Requests (Python):
import requests
def test_get_user_by_id():
url = "https://reqres.in/api/users/2"
response = requests.get(url)
assert response.status_code == 200 # Sprawdzanie kodu odpowiedzi
data = response.json()
assert data['data']['id'] == 2 # Sprawdzanie wartości w ciele odpowiedzi
assert data['data']['first_name'] == 'Janet'