🔗 Ekosistem
Ekosistem: Python Test Ekosistemi Java dünyasında Maven/Gradle TEK bir şefe benzer — bağımlılık, derleme, test çalıştırma, hepsi BİR aracın elinde.
Python Test Ekosistemi
Java dünyasında Maven/Gradle TEK bir şefe benzer — bağımlılık, derleme, test çalıştırma, hepsi BİR aracın elinde. Python ekosistemi ise her biri TEK bir işte uzmanlaşmış bir mutfak ekibi gibidir: pip sadece malzeme getirir, pytest sadece pişirme testini yapar, black sadece tabağı düzgün dizer. Şimdi şunu sor: bu PARÇALANMIŞLIK bir zayıflık mı, yoksa bir güç mü? Güç — çünkü her aracı, daha iyisi çıkana kadar İSTEDİĞİN zaman değiştirebilirsin (flake8'i ruff ile değiştirmek, Maven'i değiştirmekten çok daha kolay). Bedeli: yeni bir QA mühendisi "hangi araç ne işe yarıyor" diye 5 farklı aracı öğrenmek zorunda kalır — Java'da tek bir Maven dokümantasyonunu okumak yeterliyken.
Java dünyasında Maven ve Gradle projenin her şeyini (bağımlılık yönetimi, derleme, test çalıştırma) yönetir. Python'da ise bu görevler araçlar arasında bölünmüştür: bağımlılıklar için pip/requirements, test çalıştırma için pytest, kod kalitesi için black/flake8 kullanılır.
Test Araçları Karşılaştırması
Python Test Pipeline Akışı
🎬 Bir Testin Arkasında: pytest + Faker + requests Birlikte Çalışırken
pytest (Test Çalıştırıcı)
requests (HTTP İstemci)
assert response.status == 201
Tek bir "kullanıcı oluştur" testi yazarken aslında TEK BİR kütüphane değil, BİRDEN FAZLA kütüphane sırayla iş yapar — hiçbirini sıfırdan yazmazsın. Bu filmde bir testin arkasındaki gerçek ZİNCİRİ izleyeceğiz.
Adım 1 — pytest, `test_create_user()` fonksiyonunu KEŞFEDER (dosya adı `test_` ile başladığı için) ve çalıştırmaya başlar. Henüz hiçbir veri ya da ağ isteği YOK.
Adım 2 — test içinde `Faker()` çağrılır: `fake.email()`, `fake.name()` GERÇEKÇİ ama SAHTE veri üretir — "aynı email'i elle 50 kere yazmak" yerine, her çalıştırmada FARKLI ama geçerli formatta veri gelir.
Adım 3 — üretilen sahte veri `requests.post()` çağrısına GEÇİRİLİR: `requests`, bu Python dict'ini gerçek bir HTTP isteğine (headers, JSON body) ÇEVİRİR ve API sunucusuna GÖNDERİR. Selenium/Playwright'ın tarayıcıyla yaptığını, requests network katmanında yapar.
Adım 4 — API "201 Created" ile yanıt verir, `requests` bu yanıtı Python nesnesine ÇEVİRİR, ve son olarak pytest'in `assert` mekanizması "beklenen 201 miydi, GERÇEKTEN 201 mi geldi?" sorusunu KARŞILAŞTIRIR — üç ayrı kütüphane, tek bir sonuç için birleşti.