Modul 8 · Python for SDETs
Data-driven
testlər
Bir test gövdəsi, çoxlu hal — cədvəldən, JSON faylından və ya CSV-dən
parametrize
JSON & CSV
oxunaqlı id-lər
verilən ≠ məntiq
Halları koddan ayır
Bir test gövdəsi, hallar cədvəli
hallar siyahısı
→
onun üzərində @parametrize
→
N müstəqil, etiketli test
🧩Sətir əlavə et, test al — gövdə heç vaxt dəyişmir. Hər hal müstəqil işləyir (və uğursuz olur), ona görə bir səhv giriş qalanları gizlətmir.
JSON faylından verilən
tests/data/login_cases.json
[
"password": "customer123", "expected": 200 },
"password": "x", "expected": 401 }
]
CASES = json.loads(
(Path(__file__).parent / "data"
/ "login_cases.json").read_text()
)
@pytest.mark.parametrize("case", CASES)
def test_login(case): …
📂Modul səviyyəsində yüklə — parametrize import zamanı işləyir, ona görə verilən onda mövcud olmalıdır. (JSON faylı = // şərh yox.)
CSV: hər dəyər bir sətirdir
# tests/data/categories.csv
category,present
electronics,true
nonexistent,false
rows = csv.DictReader(f)
present = row["present"] == "true"
🔤csv.DictReader sətir başına bir dict verir, amma hər dəyər sətirdir — ona görə "false" truthy-dir!
🔁Tipləri özün çevir: == "true" müqayisə et və ya int(...)-a bük — reader bunu sənin üçün etməyəcək.
Hər hala oxunaqlı ad ver
id yox — qapalı
test_login[case0]
test_login[case1]
test_login[case2]
verilədən id-lər
ids=[f"{c['email']}->{c['expected']}"
for c in CASES]
🧮
Hallar
verilən kimi
Bir gövdə, çoxlu sətir — JSON və ya CSV-dən, hər biri adlandırılıb ki, uğursuzluqlar hala işarə etsin
🧪
Məşq
JSON-dan login matrisi: valid→200, wrong→401, empty→400
🔤
CSV tipləri
categories.csv-ni oxu və sətirləri çevirməyi unutma
➡️
Modul 9
Hesabat & dəst quruluşu — HTML hesabatları, marker-lər, qovluqlar