Sobes.tech
Junior

Jak sprawdzisz, czy zwróciłeś właściwe pola?

sobes.tech AI

Odpowiedź od AI

Sprawdzenie, czy zwracane są dokładnie potrzebne pola, można wykonać na kilka sposobów, w zależności od typu odpowiedzi (JSON, XML itp.), używanego narzędzia i poziomu testowania (API, E2E):

  1. Walidacja schematu odpowiedzi (Schema Validation):

    • Najbardziej niezawodna metoda.
    • Tworzy się schemat (JSON Schema, XML Schema), który opisuje strukturę i oczekiwane typy danych.
    • Odpowiedź jest walidowana względem tego schematu.
    • Gwarantuje obecność/brak pól, ich typy i opcjonalnie wyrażenia regularne dla wartości.
    // Przykład schematu JSON dla odpowiedzi z użytkownikiem
    {
      "type": "object",
      "properties": {
        "id": { "type": "integer" },
        "name": { "type": "string" },
        "email": { "type": "string", "format": "email" }
      },
      "required": ["id", "name", "email"]
    }
    
  2. Bezpośrednia weryfikacja obecności/braku pól i wartości (Field Presence and Value Assertion):

    • Parsowanie odpowiedzi.
    • Sprawdzenie, czy każde oczekiwane pole jest obecne.
    • Sprawdzenie, czy niepożądane pola nie są obecne.
    • Sprawdzenie typów danych pól.
    • Sprawdzenie wartości pól (w odniesieniu do konkretnej wartości, wyrażenia regularnego, zakresu itp.).
    # Przykład sprawdzania odpowiedzi JSON w Python (z użyciem requests i pytest)
    import requests
    import pytest
    
    def test_user_response_fields():
        response = requests.get("http://api.example.com/users/1")
        assert response.status_code == 200
        data = response.json()
    
        # Sprawdzenie obecności pól
        assert "id" in data
        assert "name" in data
        assert "email" in data
    
        # Sprawdzenie, czy niepożądane pola nie są obecne (np. 'password')
        assert "password" not in data
    
        # Sprawdzenie typów pól
        assert isinstance(data["id"], int)
        assert isinstance(data["name"], str)
        assert isinstance(data["email"], str)
    
        # Sprawdzenie wartości (przykład)
        assert data["id"] > 0
        assert "@" in data["email"]  # Podstawowa weryfikacja formatu email
    
  3. Porównanie z referencją (Golden Master / Snapshot Testing):

    • Zapisywana jest poprawna odpowiedź (referencja).
    • Aktualna odpowiedź jest porównywana z referencją.
    • Przydatne do sprawdzania stabilności struktury, ale mniej elastyczne przy oczekiwanych zmianach danych.
  4. Użycie specjalistycznych bibliotek/frameworków:

    • RestAssured (Java)
    • Postman (Newman): pozwala na pisanie testów w JavaScript, w tym sprawdzania schematów i pól.
    • Pytest/unittest z bibliotekami do obsługi JSON/XML.

Wybór metody zależy od złożoności struktury odpowiedzi, wymagań co do dokładności walidacji i używanego stosu technologicznego. Walidacja schematu jest złotym standardem dla testowania API, ponieważ obejmuje wszystkie aspekty struktury i typów danych.