📝 Pratik & Alıştırma
Pratik & Alıştırma: Alıştırma 1: Test Sonuçlarını Parse Et Her biri "status" anahtarı ("PASS", "FAIL" veya "SKIP") olan dict'lerin listesini alan parse_results(results) fonksiyon
Alıştırma 1: Test Sonuçlarını Parse Et
Her biri "status" anahtarı ("PASS", "FAIL" veya "SKIP") olan dict'lerin listesini alan parse_results(results) fonksiyonunu yazın. Döndürsün: {"PASS": N, "FAIL": N, "SKIP": N, "total": N}.
Döngüden önce counts'ı başlatın. .get() ile varsayılan değer KeyError'ı önler. "total" değerini sonunda ekleyin; bilinmeyenler dahil tüm öğeleri yansıtsın.
Alıştırma 2: APIClient Class'ı
base_url, get(path) ve post(path, data) metodlarına sahip APIClient class'ı oluşturun; parse edilmiş JSON dönsün. ConnectionError (None döndür), Timeout (None döndür), HTTPError (fırlat) durumlarını yönetin. Bağlantı yeniden kullanımı için requests.Session kullanın.
Session TCP bağlantılarını yeniden kullanarak overhead'i azaltır. Ağ hatalarını (None döndür) HTTP hatalarından (fırlat) ayırmak çağıran koda farklı seçenekler sunar.
Alıştırma 3: Session DB + CSV Parametrize ile pytest conftest
Session-scoped SQLite fixture ile conftest.py yazın (users tablosu oluşturun). parametrize ile CSV'den test verisi yükleyip her kullanıcının e-postasını DB'de doğrulayan test_users.py dosyası yazın.
Session scope: DB tüm testler boyunca kalıcıdır (verimli). Her test kendi verilerini temizleyerek testler arası durum sızıntısını önler. parametrize tek fonksiyondan birden fazla senaryo çalıştırır.
Hızlı Referans Kartı
Ayrıntılı çıktı ve kısa hata izleri için "python -m pytest -v --tb=short" çalıştırın. Hata ayıklarken tarayıcıyı görmek için Playwright'a "--headed" ekleyin.
`with open("f.txt") as f:` gibi bir context manager kullanmanın temel avantajı nedir?
Dosyayı daha hızlı okur
Blok bittiğinde (hata olsa da olmasa da) kaynağı otomatik kapatır, try/finally yazmaya gerek kalmaz