Middle
Jak můžete automatizovat testování API?
sobes.tech AI
Odpověď od AI
Automatizace testování API může být provedena následujícími způsoby:
-
Použití rámců/knihoven:
- Rest-Assured (Java): Oblíbená knihovna pro testování REST API.
- Requests (Python): Jednoduchá a výkonná knihovna pro HTTP požadavky.
- SuperTest (Node.js): Knihovna pro testování HTTP serverů a API.
- Postman/Newman: Aplikace s GUI a CLI pro tvorbu a spuštění testů API.
-
Vytváření testovacích scénářů:
- Pro každý endpoint jsou definovány pozitivní a negativní testovací případy.
- Scénáře zahrnují odesílání požadavků s různými parametry, kontrolu stavových kódů odpovědí, obsahu těla (JSON, XML atd.) a hlaviček.
-
Ověřování dat:
- Validace JSON schématu pro kontrolu struktury a typů dat v odpovědi.
- Porovnání skutečných hodnot v odpovědi s očekávanými.
-
Správa dat:
- Použití testovacích dat uložených v souborech (JSON, CSV) nebo databázích.
- Příprava dat před spuštěním testu a čištění po něm (pokud je potřeba).
-
Integrace s CI/CD systémy:
- Nastavení automatického spouštění API testů při každé změně kódu nebo pravidelně (například každou noc).
- Použití Jenkins, GitLab CI, GitHub Actions atd.
-
Reportování:
- Generování podrobných zpráv o výsledcích testů (například, Allure Framework).
Příklad použití 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() {
// Základní URL API
RestAssured.baseURI = "https://reqres.in/api";
// Odeslání GET požadavku
given()
.when()
.get("/users/2")
.then()
.statusCode(200) // Kontrola kódu stavu
.body("data.id", equalTo(2)) // Kontrola hodnoty v těle odpovědi
.body("data.first_name", equalTo("Janet"));
}
}
Příklad použití 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 # Kontrola kódu stavu
data = response.json()
assert data['data']['id'] == 2 # Kontrola hodnoty v těle odpovědi
assert data['data']['first_name'] == 'Janet'