Modul 5 · Python for SDETs

Test datası
quraşdırma & söküş

Hər test idarə etdiyin vəziyyətdən başlayır — və heç bir dağınıqlıq qoymur

reset baza API vasitəsilə hazırla yield söküş factory fixture-ləri
AI with Rufat
Təkrar yarada bilmədiyin flakylik

Vəziyyəti bölüşən testlər təkrar yarada bilmədiyin cür uğursuz olur

🔀

Sıradan-asılı

test B yalnız test A əvvəl işləyibsə keçir — yenidən sırala və o sınır.

👻

Qalıq verilən

dünənki sifariş və ya istifadəçi qalır və bugünkü assert-i əyir.

🎲

Yaşıl, sonra qırmızı

eyni test tək keçir, dəstdə uğursuz olur — klassik flake.

🎯Düzəliş: hər test öz vəziyyətinə sahibdir — məlum bazadan başla, dəqiq ehtiyacını qur, sonra təmizlə.
AI with Rufat
Məlum vərəqə, hər dəfə

Məlum bazaya reset et

POST /api/reset
seed verilən bərpa olundu ✅
testin təmiz vərəqədə işləyir
@pytest.fixture
def reset_db(base_url):
requests.post(f"{base_url}/api/reset")
yield # test runs here, on fresh data
AI with Rufat
UI yox, API vasitəsilə hazırla

Sifarişi olan daxil olmuş istifadəçi lazımdır? Qeydiyyat → login → checkout boyunca klikləmə. Veriləni birbaşa POST et — bir sürətli, etibarlı çağırış — sonra əslində maraqlandığın şeyi test et.

API quraşdırması vəziyyəti qurmaq üçün UI-ni idarə etməkdən daha sürətli və qat-qat az flaky-dir.
# arrange: one API call, not 6 UI clicks
order = api.post(
f"{base_url}/api/orders",
json={"email": user, "items": […]},
).json()
# act + assert on what matters
assert order["total"] == pytest.approx(59.98)
AI with Rufat
yield-dən əvvəl qur, sonra təmizlə
@pytest.fixture
def temp_product(api, base_url):
# setup
p = api.post(…/products).json()
yield p # hand it to the test
# teardown — always runs
api.delete(f"…/products/{p['id']}")
♻️yield-dən əvvəlki kod quraşdırmadır; sonrakı kod söküşdür — və test uğursuz olsa belə işləyir.
🏭Bir neçəsi lazımdır? Factory fixture-i testin N dəfə çağırdığı bir funksiya qaytarır — hər biri unikal adla, və reset_db sonra hamısını yenidən səpərək aparır.
AI with Rufat
♻️

Test vəziyyətinə
sahib ol

Bazanı reset et, API vasitəsilə hazırla və fixture-lərin təmizləməsinə imkan ver

🧪
Məşq
reset_db fixture-i + API vasitəsilə sifariş hazırla və totalını assert et
🏭
Factory
N məhsul quran factory fixture-i, hər biri unikal adla
➡️
Modul 6
UI avtomatlaşdırma — Python üçün Playwright ilə brauzeri idarə et
AI with Rufat
← / → · space