Modul 2 · Python for SDETs

Fixtures & parametrize

Quraşdırmanı təkrarlamağı dayandır — və bir testi çoxlu giriş üzərində işlət

fixtures yield scope parametrize
AI with Rufat
Fixtures = təkrar işlədilən quraşdırma

Test istəyir; pytest təmin edir

@pytest.fixture
def base_url():
return "http://localhost:3000"
def test_products(base_url):
r = requests.get(base_url + "/api/products")
assert r.status_code == 200
💡Test fixture-i parametr kimi adlandırır; pytest onu işlədir və qaytarılan dəyəri inyeksiya edir. Bu, dependency injection-dir — əllə çağırış yoxdur.
AI with Rufat
yield — əvvəl quraşdırma, sonra söküş

Bir funksiya, hər iki yarı

yield-DƏN ƏVVƏL
quraşdırma
session = requests.Session()
yield
test işləyir
yield session
yield-DƏN SONRA
söküş
session.close()
🛡️Söküş test uğursuz olsa belə işləyir — təmizləmə üçün try/finally-ni əvəz edir.
AI with Rufat
Scope — təcrid vs sürət

Fixture nə qədər tez-tez işləyir

scope="function"test başına bir dəfə · standart · ən təcrid olunmuş
scope="class"test sinifi başına bir dəfə
scope="module".py faylı başına bir dəfə
scope="session"bütün icra başına bir dəfə · ən sürətli · bölüşülən vəziyyət
⚖️Düzgün olan ən dar scope-u işlət. Yalnız yalnız-oxu və ya bölüşməsi təhlükəsiz quraşdırma üçün genişləndir (base_url kimi).
AI with Rufat
Bir test, çoxlu giriş
@pytest.mark.parametrize(
"category",
["electronics", "accessories", "furniture"],
)
def test_category(category):
# runs once per row
pytest -v
test_category[electronics] PASSED
test_category[accessories] PASSED
test_category[furniture] PASSED
Bir funksiya → üç müstəqil nəticə. Hal əlavə et = sətir əlavə et. Onları ids= ilə adlandır.
AI with Rufat
🧩

Quraşdırma, bölüşülən & təmiz

Fixture-lər quraşdırmanı inyeksiya edir · parametrize cədvəli əhatə edir · conftest.py hər ikisini bölüşür

📁
conftest.py
Bölüşülən base_url / api / reset_db — avtomatik tapılır, import yoxdur
🏷️
Marker-lər
Testləri etiketlə (smoke/api) və -m ilə seç; skip / xfail daxildir
➡️
Modul 3
requests ilə API testi — tətbiqə qarşı hər HTTP feli
AI with Rufat
← / → · space