Sobes.tech
Junior

Kaip patikrinsi, ar grąžinote teisingus laukus?

sobes.tech AI

Atsakymas iš AI

Patikrinkite, ar grąžinti yra būtent reikalingi laukai, galima keliomis būdais, priklausomai nuo atsakymo tipo (JSON, XML ir kt.), naudojamo įrankio ir testavimo lygio (API, E2E):

  1. Atsakymo schemos validavimas (Schema Validation):

    • Patikimiausias būdas.
    • Sukuriama schema (JSON Schema, XML Schema), aprašanti tikėtino atsakymo struktūrą ir duomenų tipus.
    • Atsakymas tikrinamas pagal šią schemą.
    • Užtikrinama laukų buvimas/ar nebuvimas, jų tipai ir, jei pageidaujama, reguliarios išraiškos reikšmėms.
    // Pavyzdys JSON schemos naudotojo atsakymui
    {
      "type": "object",
      "properties": {
        "id": { "type": "integer" },
        "name": { "type": "string" },
        "email": { "type": "string", "format": "email" }
      },
      "required": ["id", "name", "email"]
    }
    
  2. Tiesioginė laukų buvimo/nebuvo ir reikšmių patikra (Field Presence and Value Assertion):

    • Atsakymo analizė.
    • Patikrinama, ar kiekvienas laukiamas laukas yra.
    • Patikrinama, ar nereikalingi laukai nėra.
    • Patikrinama laukų duomenų tipai.
    • Patikrinamos laukų reikšmės (atitiktis konkrečiai reikšmei, reguliariems išraiškoms, diapazonui ir kt.).
    # Pavyzdys Python kalba JSON atsakymo patikrai (naudojant requests ir 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()
    
        # Laukų buvimo patikra
        assert "id" in data
        assert "name" in data
        assert "email" in data
    
        # Nereikalingų laukų (pvz., 'password') nebuvimo patikra
        assert "password" not in data
    
        # Laukų tipų patikra
        assert isinstance(data["id"], int)
        assert isinstance(data["name"], str)
        assert isinstance(data["email"], str)
    
        # Reikšmių patikra (pavyzdys)
        assert data["id"] > 0
        assert "@" in data["email"] # Paprasta el. pašto formato patikra
    
  3. Lyginimas su etalonu (Golden Master / Snapshot Testing):

    • Iš anksto išsaugomas teisingas atsakymas (etalonas).
    • Dabartinis atsakymas lyginamas su etalonu.
    • Naudinga struktūros stabilumo patikrai, bet mažiau lanksti laukiamų pokyčių atveju.
  4. Specializuotų bibliotekų/ramų naudojimas:

    • RestAssured (Java)
    • Postman (Newman): leidžia rašyti testus JavaScript, įskaitant schemų ir laukų patikrinimus.
    • Pytest/unittest su JSON/XML darbo bibliotekomis.

Pasirinkimas priklauso nuo atsakymo struktūros sudėtingumo, tikslumo reikalavimų ir naudojamos technologinės platformos. Schemos validavimas yra aukso standartas API testavimui, nes jis apima visus struktūros ir duomenų tipų aspektus.