⚗️Test İşlemleri
Python ile paket, modül veya kodları kontrol etme, unit test veya functional test gibi yöntemlerle testing işlemleri uygulama
Last updated
Python ile paket, modül veya kodları kontrol etme, unit test veya functional test gibi yöntemlerle testing işlemleri uygulama
Last updated
© 2024 ~ Yunus Emre Ak ~ yEmreAk
👨🔬 İ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
💡 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.
👨🔬 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 ismi ile başlayan her obje test için kullanılır
👷♂️ Test sınıfındaki her oluşturulduğunda setup_class
ve teardown_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
ve teardown_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.
👷♂️ Test işlemleri için pytest
modülü kullanılması tavsiye edilir
💁♂️ pytest
ile assert
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
👮♂️ 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 komutu python -m pytest
olarak bilinir
🕵️♂️ pytest
test işlemleri için isminin başında test
içeren metot ve sınıflar kullanır
🔨 pytest
tüm test paketlerini varsa setup.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 isterseniz pytest <python_dosyası> -s
komutunu kullanın
📢 Sadece pytest
komutu hatalara sebebiyet vermekte
📢 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.
📃 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ğı dizinler python_files
ve testpaths
alanında belirtilir
👨🔬 Test işlemleri için python setup.py test
komutunu kullanabilirsin
🙄 Kullanabilirsin dedim ama, lütfen o komutu kullan
📦 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.
✍ Yazıyı Medium sitesinde oku (eski olabilir)