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ü
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
Hər fel, uğur statusu
Dörd HTTP feli
POST
201
yaradıldı; gövdədə yeni qeyd var
📌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.
json= gövdə göndərir, server iş görür
payload = {
"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.
Əsl API testinin forması
Tam həyat dövrü, bir test
→
→
→
→
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).
🌐
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