Artık sitemizde Django üzerine konularda yazı yazmaya karar verdim belki de bu bir direnişti fakat o kadar gelişmiş bir frameworku artık görmemezden gelemeyiz. Bu yazımızda basit bir konu olacak fakat bence development süreçlerinin en önemli konularından biri.
Proje içinden app klasörümüze gecelim cd uygulama/app/app ve test edeceğimiz hesapla.py dosyasını yazalım.
vim uygulama/app/app/hesapla.py
def ekle(x, y): """X ve Y sayisini ekler ve return degeri olarak toplamini döner""" return x + y def cikar(x, y): """X degerinden Y degerini cikarir ve return degeri olarak cikartama sonucunu dondurur""" return x - y
unit test yapacagimiz dosyamızın adı da tests.py olsun aynı dizinde olması yeterlidir. Django unit testi çalıştırırken test parametresini hem dosya isimlerinde hemde metodlarda arar bu noktaya dikkat etmek önemlidir.
from django.test import TestCase from app.calc import ekle, cikar class HesaplaTests(TestCase): def test_ekle_sayi(self): """iki sayi toplaminin esitligini kontrol eder""" self.assertEqual(ekle(5, 2), 7) def test_cikar_sayi(self): """iki sayinin cikarma isleminin sonucunu kontrol eder""" self.assertEqual(cikar(9, 4), 5)
Test dosyamız hazır artık Console üzerinden çalıştırabiliriz.
Hiç bir sorunla karşılamazsanız aşağıdaki gibi bir sonuç elde edersiniz.
Creating test database for alias 'default'... System check identified no issues (0 silenced). .. ---------------------------------------------------------------------- Ran 2 tests in 0.001s OK
python manage.py test core.tests.test_recipe.RecipeTest
pip install coverage coverage run --source='core' manage.py test core.tests.test_recipe.RecipeTest coverage html open htmlcov/index.html
Ek bilgi vermek istiyorum flake8 kütüphanesinide test süreçlerine dahil edebilirsiniz oldukça faydalı bir tool python syntax tarzı denetimleri yapıyor koyduğunuz boşluğa kadar kontrol ediyor.. Kullanım şekli aşağıdaki gibidir.
python manage.py test && flake8
Yorumlar
Bilgisayarıma Python 3.3.2 yükledim, program çalışıyor.Düzenlediğim herhangi bir dosyayı save edip run ettiğim zaman başarılı olamıyorum, hata alıyorum. Nasıl çözüm bulabilirim acaba?