Sobes.tech
Middle

Как можете да автоматизирате тестването на API?

sobes.tech AI

Отговор от AI

Автоматизацията на тестването на API може да бъде извършена по следните начини:

  1. Използване на рамки/библиотеки:

    • Rest-Assured (Java): Популярна библиотека за тестване на REST API.
    • Requests (Python): Лека и мощна библиотека за изпълнение на HTTP заявки.
    • SuperTest (Node.js): Библиотека за тестване на HTTP сървъри и API.
    • Postman/Newman: Приложения с GUI и CLI за създаване и изпълнение на API тестове.
  2. Създаване на тестови сценарии:

    • За всеки ендпоинт се определят позитивни и негативни тестови случаи.
    • Сценариите включват изпращане на заявки с различни параметри, проверка на статусите на отговорите (HTTP кодове), съдържанието на тялото на отговора (JSON, XML и др.) и заглавията.
  3. Проверка на данни:

    • Валидация на JSON схема за проверка на структурата и типовете данни в отговора.
    • Сравнение на фактическите стойности в отговора с очакваните.
  4. Управление на данни:

    • Използване на тестови данни, съхранявани във файлове (JSON, CSV) или бази данни.
    • Подготовка на данните преди изпълнение на теста и почистване след него (ако е необходимо).
  5. Интеграция с системи CI/CD:

    • Настройка на автоматичното изпълнение на API тестове при всяка промяна на кода или редовно (например, всяка вечер).
    • Използване на Jenkins, GitLab CI, GitHub Actions и др.
  6. Отчитане:

    • Генериране на подробни отчети за резултатите от тестовете (например, Allure Framework).

Пример за използване на 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() {
        // Базов URL на API
        RestAssured.baseURI = "https://reqres.in/api";

        // Изпращане на GET заявка
        given()
                .when()
                .get("/users/2")
                .then()
                .statusCode(200)  // Проверка на статус кода
                .body("data.id", equalTo(2))  // Проверка на стойността в тялото на отговора
                .body("data.first_name", equalTo("Janet"));
    }
}

Пример за използване на 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  # Проверка на статус кода
    data = response.json()
    assert data['data']['id'] == 2  # Проверка на стойността в тялото на отговора
    assert data['data']['first_name'] == 'Janet'