Sobes.tech
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:

  1. 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.
  2. 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.
  3. Weryfikacja danych:

    • Walidacja schematu JSON w celu sprawdzenia struktury i typów danych w odpowiedzi.
    • Porównanie wartości faktycznych w odpowiedzi z oczekiwanymi.
  4. 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).
  5. 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.
  6. 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'