Modul 3 · Python for SDETs

API Testi
requests ilə

Real API-yə qarşı hər HTTP felini işlət — və geri gələni oxu

GET / POST PUT / DELETE status & JSON CRUD həyat dövrü
AI with Rufat
Cavabın anatomiyası
r = requests.get("…/api/products/1")
r.status_code # 200
r.ok # True for any 2xx/3xx
r.headers # case-insensitive dict
r.json() # body → dict / list
🔢

.status_code

tam status (200, 201, 404…)

.ok

400-dən aşağı istənilən status üçün True

📋

.headers

cavab başlıqları, böyük-kiçik hərfə həssas deyil

📦

.json()

gövdəni Python-a ayrışdır

AI with Rufat
Hər fel, uğur statusu

Dörd HTTP feli

GET
200
resurs oxu
POST
201
yaradıldı; gövdədə yeni qeyd var
PUT
200
yeniləndi
DELETE
200
silindi
📌requests 4xx-də heç vaxt xəta atmır — status sadəcə assert etdiyin verilədir. Oxumalar sadə requests işlədir; yazmalar reset_db fixture-i ilə yenidən səpir ki, təkrar icralar təmiz qalsın.
AI with Rufat
json= gövdə göndərir, server iş görür
payload = {
"email": "[email protected]",
"items": [{"product_id": 1, "quantity": 2}],
}
r = api.post("…/api/orders", json=payload)
201Created
total: 59.98 # 29.99 × 2, server-side
json= Content-Type-ı da sənin üçün qoyur. Total hesablanır — onu pytest.approx ilə assert et.
AI with Rufat
Əsl API testinin forması

Tam həyat dövrü, bir test

YARAT
POST → 201
OXU
GET → 200
YENİLƏ
PUT → 200
SİL
DELETE → 200
GETDİYİNİ TƏSDİQLƏ
GET → 404
🔁Bir tutarlı testdə hər fel — və özündən sonra təmizləyir. Yalnız silmə statusunu yox, təsiri sübut et (sonrakı GET → 404).
AI with Rufat
🌐

Bütün
API səthi

Oxu və yaz, status + gövdə assert et və tam CRUD həyat dövrü işlət

🧪
Məşq
TestMarket Lab-a qarşı CRUD — yeni id-ni POST cavabından tut
♻️
reset_db
Yazmalar əvvəlcə yenidən səpir, ona görə testlərin müstəqil və təkrar-işlədilə bilən qalır
➡️
Modul 4
Neqativ & validasiya — 400 / 401 / 404 / 409, düzgün cür uğursuz olmaq
AI with Rufat
← / → · space