⚗️Test İşlemleri
Python ile paket, modül veya kodları kontrol etme, unit test veya functional test gibi yöntemlerle testing işlemleri uygulama
👀 Hızlı Bakış
👨🔬 İlerleyen zamanlarda eski metotların değişmesi durumunda, kodun istendiği gibi çalıştığından emin olunması amaçlanır
📈 Test metotları ile tüm kodun çalışabilirliğinin testi; 155 test için 19s gibi kısa sürelerde tamamlanabilir
🙄
print
metotları yerine, doğru yazılmış test yapısı zaman kazandıracaktır💁♂️ Bu testleri elle yapmanız kesinlikle 19s'den fazla olacaktır ve de testlerin başkalarına aktarılması gerekecektir
🧐 Ek olarak testleri unutacağınızı da unutmayın
🌟 Görsel Örnekler
💡 Neye erişeceğinizi yapmadan önce görmeniz gerekir ki, bakmak için motivasyonunuz olsun.
👇 Test komutunu çalıştırdıktan sonra, çıktı aşağıdaki gibi olacaktır
📋 Başarısız olan testler hakkında size özet bir çıktı sunacaktır
🧐 Hataların tam olarak nereden geldiğini gösteren detaylı sonuçları ile hızlıca düzeltmeler yapabileceksiniz
🦸♂️ Eğer VS Code kullanıyorsanız, kırmızı linklere tıklayıp, direkt olarak hatalı satıra gidebilirsiniz
💁♂️ Ayrıca ✲ Ctrl P komutuna basıp çıkan ekrana, : karakterini koyup, satır ve sütun değerlerini yazıp ilgili alana geçebilirsiniz
🚀
input.py:6:1
değeri ile input dosyasının 6. satır 1. sütun alanına gidersiniz
👨🔬 Bu çıktıların hepsi 📦 YPackage üzerindeki test sonuçlarıdır. Test içerek bir proje örneği için projeme kesinlikle bakmanı ve notlarımın örneklerini projem üzerinden bulmanı öneririm.
📑 Doküman Testi
👨🔬 Metotlar, kendi dokümanları ile test edilir
👨💻
>>>
başlangıç eki ile kodlar yazılır🚩
...
başlangıç eki ile de girinti gereken satırlar oluşturulur👁️ Kod çıktılarını hemen alt satıra yazılır, test işleme çıktılara eşit mi kontrolü yapar
👮♂️ String çıktıları için
'
karakteri arasına yazmanız gerekir🕊️ Her işlemin çıktısı olması gerekmez
🚀 Harici fonksiyonlar da kullansa, doküman ile test edilebilir
💁♂️ Ufak metotlar için doküman ile testi çok daha efektif bulmaktayım
📢 Whitespace karakterleri, örneğin için '
karakteri arasında \
olarak belirtilir
🧙♂ Detaylı bilgi için Doctest integration for modules and test files alanına bakabilirsin.
🍎 Test Sınıfları
💡 Test ismi ile başlayan her obje test için kullanılır
👷♂️ Test sınıfındaki her oluşturulduğunda
setup_class
veteardown_class
metotları tetiklenir⚙️
setup_class
metodu class oluşturulduğunda çalıştırılır, testin__init__
işlemi gibi düşünülebilir, alttaki işlemler için kullanılabilir:✨ Yerel değişkenler oluşturmak
📂 Test için dosya dizin oluşturmak
💥
teardown_class
metodu class sonlandırıldığında çalıştırılır, alttaki işlemler için kullanılabilir:💦 Test için oluşturulan dosya ve dizinleri temizlemek
💁♂️
setup_method
veteardown_method
işlemleri sınıflar değil; metotlar oluşturulup, kaldırıldığında tetiklenir
🧙♂ Detaylı bilgi için How do I correctly setup and teardown my pytest class with tests? alanına bakabilirsin.
👮♂️ Çıktıların Kontrol Edilmesi
👷♂️ Test işlemleri için
pytest
modülü kullanılması tavsiye edilir💁♂️
pytest
ileassert
anahtar kelimesi ile testin sonucunun, beklenen sonuca eşit olmasını kontrol edin👨💻
assert test_result() == 2
✨
pytest
modülü çıktılarınızı anlaşılır bir şekilde size sunacaktır
🐛 Hata Mesajları Bekleme
👮♂️ Beklenen hata mesajları için
with
yapısı kullanılır🧐 Beklediğin hata tipini
with
içerisinde yazıp, alt scope'una kodlarınızı yazın💁♂️ Eğer içeride hata fırlatılmazsa
pytest
test başarısız olarak gösterecektir🧐 Hataları filtrelemek için
match
parametresi ile filtre değeri verebilirsiniz
⚗️ Test İşlemini Yapma
🖤 Test komutu
python -m pytest
olarak bilinir🕵️♂️
pytest
test işlemleri için isminin başındatest
içeren metot ve sınıflar kullanır🔨
pytest
tüm test paketlerini varsasetup.cfg
dosyasında belirtildiği şekilde bulacaktır🧐
flake8 --exclude=venv* --statistics
komutu ile kod kalitesini ölçebilirsiniz📜
print
çıktılarını da görmek istersenizpytest <python_dosyası> -s
komutunu kullanın
📢 Sadece pytest
komutu hatalara sebebiyet vermekte
📂 Dizin Yapılandırması
📢 Dizinler içerisinde python kodlarının olduğu belirtmek için
__init__.py
dosyalarının olması gerekir👮♂️ Dosyalar olmadan, python kodlarına diğer python kodlarından erişilemez
📈 Verimlilik adına test ve kaynak kodların ayrı dizinlerde saklanması tavsiye edilir
🧙♂ Detaylı bilgi için Choosing a test layout / import rules alanına bakabilirsin.
🔨 Yapılandırma Dosyası
📃 Test yapılandırma dosyası olarak
setup.cfg
dosyası kullanılır💡
[<modül>]
şeklinde modüle özgü ayarlar tanımlanır🧪
pytest
için[tool:pytest]
alanı altında test yapılandırması yapılır👀
pytest
'in bakacağı dizinlerpython_files
vetestpaths
alanında belirtilir👨🔬 Test işlemleri için
python setup.py test
komutunu kullanabilirsin
🙄 Kullanabilirsin dedim ama, lütfen o komutu kullan
🔸 Unit Test İşlemleri
📦 Unit test için
unittest
paketi kullanılır💠
setUp
metodu ile her test öncesi işlemler tanımlanır💦
tearDown
metodu ile de her test sonrası işlemler tanımlanır👨💼
python -m pytest
komutu ile çalıştırılabilirler
🌇 Eskimiş bir yapıdır, tavsiye etmiyorum
🧙♂ Detaylı bilgi için unittest
paketine bakabilirsin.
🔗 Faydalı Bağlantılar
✍ Yazıyı Medium sitesinde oku (eski olabilir)
Last updated