Middle
Kaip galite automatizuoti API testavimą?
sobes.tech AI
Atsakymas iš AI
API testavimo automatizavimas gali būti vykdomas šiais būdais:
-
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.
-
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ą.
-
Duomenų tikrinimas:
- JSON schemos validavimas, struktūros ir duomenų tipų tikrinimas.
- Faktinių reikšmių palyginimas su tikėtinomis.
-
Duomenų valdymas:
- Testų duomenų naudojimas, saugomas failuose (JSON, CSV) arba duomenų bazėse.
- Duomenų paruošimas prieš testą ir valymas po jo (jei reikalinga).
-
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.
-
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'