Sobes.tech
Middle

Kaip galite automatizuoti API testavimą?

sobes.tech AI

Atsakymas iš AI

API testavimo automatizavimas gali būti vykdomas šiais būdais:

  1. Rėmų/bibliotekų naudojimas:

    • Rest-Assured (Java): Populiari biblioteka REST API testavimui.
    • Requests (Python): Paprasta ir galinga biblioteka HTTP užklausoms vykdyti.
    • SuperTest (Node.js): Biblioteka HTTP serverių ir API testavimui.
    • Postman/Newman: Programėlės su GUI ir CLI API testų kūrimui ir vykdymui.
  2. Testų scenarijų kūrimas:

    • Kiekvienam galiniam taškui apibrėžiami teigiami ir neigiami testų atvejai.
    • Scenarijai apima užklausų siuntimą su įvairiais parametrais, atsakymų statuso kodų tikrinimą, turinio (JSON, XML ir kt.) ir antraščių patikrinimą.
  3. Duomenų tikrinimas:

    • JSON schemos validavimas, struktūros ir duomenų tipų tikrinimas.
    • Faktinių reikšmių palyginimas su tikėtinomis.
  4. Duomenų valdymas:

    • Testų duomenų naudojimas, saugomas failuose (JSON, CSV) arba duomenų bazėse.
    • Duomenų paruošimas prieš testą ir valymas po jo (jei reikalinga).
  5. Integracija su CI/CD sistemomis:

    • Automatinio API testų paleidimo nustatymas kiekvieno kodo pakeitimo metu arba reguliariai (pvz., kiekvieną vakarą).
    • Jenkins, GitLab CI, GitHub Actions ir kt.
  6. Ataskaitų generavimas:

    • Išsamios ataskaitos apie testų rezultatus generavimas (pvz., Allure Framework).

Pavyzdys naudojant 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() {
        // API bazinis URL
        RestAssured.baseURI = "https://reqres.in/api";

        // GET užklausos siuntimas
        given()
                .when()
                .get("/users/2")
                .then()
                .statusCode(200)  // Patikrinimas, ar grąžintas teigiamas statuso kodas
                .body("data.id", equalTo(2))  // Patikrinimas, ar atsakymo turinyje yra tikėtina reikšmė
                .body("data.first_name", equalTo("Janet"));
    }
}

Python Requests pavyzdys:

import requests

def test_get_user_by_id():
    url = "https://reqres.in/api/users/2"
    response = requests.get(url)

    assert response.status_code == 200  # Patikrinimas, ar grąžintas teigiamas statuso kodas
    data = response.json()
    assert data['data']['id'] == 2  # Patikrinimas, ar atsakymo turinyje yra tikėtina reikšmė
    assert data['data']['first_name'] == 'Janet'