Tekrar hoş geldiniz.
Şimdi ilk testlerimizi yazalım.
Bu programda çalıştıracağımız basit bir fonksiyonumuz olacak.
Ana dosyamızda bir dosya oluşturacağız ve diyelim ki bunu biraz daha büyük yapalım.
Diyelim ki do stuff adında bir fonksiyonumuz var.
Evet, çok açıklayıcı bir işlev.
Şimdi burada, sadece bir sayı kabul ettiğimizi söyleyeceğiz.
Ve biz sadece num artı 5'i döndürürüz.
Çok, çok basit bir işlev.
Diyelim ki uygulamamızı oluşturan kodumuz buydu.
Yani bu sadece bir işlev.
Ancak varsayımsal olarak, test etmek istediğimiz birçok fonksiyonumuz var çünkü bunlar kodumuzda
gerçekleştireceğimiz eylemler.
Yani birim testinin çalışma şekli.
Bunun gibi.
Test dosyamız var ve birim testimizi içe aktardıktan sonra, bizim durumumuzda main py olan test etmek istediğimiz dosyayı
da içe aktarmak istiyoruz.
O zaman sadece ithal edelim.
Ana.
Tam burada.
Ya da istersek sadece fonksiyonu da içe aktarabiliriz.
Ancak bizim durumumuzda, varsayımsal olarak, burada birçok fonksiyonumuz var, bu yüzden sadece main'i içe aktarabilir ve orada bulunan
tüm fonksiyonları kullanabiliriz.
Şimdi birim testinin çalışma şekli, bir sınıf oluşturmak ve sonra ona istediğiniz ismi vermektir.
Ve burada tüm testlerimizi yapacağız.
Bu yüzden buna Test Ana diyelim.
Ve bu sınıfın içinde birim testinin bize verdiği bir testi miras alırız.
Yani bu, birim testi ile çalışmanın standart bir yoludur.
Böylece birim testi test senaryolarını miras alıyoruz ve artık test ana sınıfımızda bu işlevselliğe
sahibiz.
Şimdi burada test etmeye ve test etmek için kod yazmaya başlayabiliriz.
Peki main'i nasıl test edebiliriz?
Bir şeyler yap.
Basitçe, hey, buraya bir fonksiyon ya da metot yazalım deriz çünkü bu bir sınıfın parçasıdır ve Hey,
test etmek, bir şeyler yapmak istiyorum deriz.
Ve burada kendini kabul edecek.
Şimdi burada, kodumu test edebilirim, böylece buradaki sayının ona eşit olup olmadığını söyleyebilirim, sadece rastgele bir sayı
veriyorum.
Sonra sonucun ana nokta do stuff'a eşit olacağını söyleyeceğim.
Unutmayın, do şeyler test etmek istediğimiz fonksiyon olan Maine'den gelir.
Bu yüzden do stuff fonksiyonunu çalıştırmak istiyorum ve burada az önce verdiğim num parametresini veriyorum
ya da buna test param diyelim.
Yani bu test param, kodu çalıştıracağız ve bir sonuç alacağız.
Ve bu son satır birim testinin kilit kısmıdır.
Birim testi self dot dememize izin verir, assert equal ve assert equal birim testinden miras aldığımızda
elde ettiğimiz bir şeydir ve assert equal hey assert der.
Ya da bu iki parametrenin eşit olduğundan emin olun.
Bizim durumumuzda, sonucun 10'a eşit olup olmadığını test etmek istiyorum.
Artı beş eşittir 15 olmalı.
Tamam.
Şimdi, son olarak burada, birim testini çalıştırıyoruz.
Ve birim testini çalıştırma şeklimiz, çünkü bu yaptığım sadece bir test.
Birden fazla test yapabilirdim.
Tek söylememiz gereken unit test dot main.
Bu da tüm test dosyasını test main içinde çalıştıracaktır.
Şimdi bunu çalıştırırsam, tek yapmam gereken Python üç, komut satırımı söylemek ve Test dot pi demek.
Ve anladım.
OC bir testi süper hızlı ve 0 saniyede gerçekleştirdi.
Bu güzel ve hızlıydı.
Şimdi diyelim ki bunun 10'a eşit olduğunu iddia ettiğim başka bir şey yapıyorum.
Eğer bunu çalıştırırsam.
Şuna bak.
Başarısız mı oldum?
Ne başarısızlığı?
İşlev testi başarısız oldu.
Sekizinci hatta.
İşte tam burada bir iddia hatamız var.
15 tane aldık ama 10 tane bekliyorduk.
Ne kadar havalı değil mi?
Şimdi bir hatam var, bu yüzden kodumu düzeltmem gerekiyor.
Yani burada doğru olmayan bir şey var.
Şimdi, benim durumumda, bu iddia ettiğim içindir.
B 15'in cevabı.
Peki ya burada başka bir test oluşturursak?
Ve kontrol et.
Hey, ya bizim de test yapmamız gerekiyorsa.
Ve bu kez test programı aslında bir ip parçası olacak.
Peki fonksiyonun ne yapmasını istiyoruz?
Bizim durumumuzda, belki bize bir hata verir, belki de bir değer hatası.
Bu yüzden sadece değer diyeceğim.
Çünkü bu işe yaramamalı.
Eğer bunu şimdi çalıştırırsam, bunu temizleyelim.
Eğer bunu şimdi çalıştırırsam.
Pekala, iki testim var.
Ancak bir mirasçım var ve burada şunu söyleyen bir mirasçı aldığımı görüyorum, hey, bir typer
yalnızca dizeyi birleştirebilir, sekizi değil.
Şimdi, bu durumda, aslında başarısız olan nedir?
Test dosyasıdır çünkü az önce yaptığımız şey aslında başarısız bir işlevdir.
Ama hemen.
Anlıyorum.
Tamam.
Bu düzeltmemiz gereken bir şey, böylece Maine'e geri dönüp, hey, herhangi bir hata yakaladığımızdan
emin olmak istiyorum diyebilirim.
Tip hataları veya değer hataları gibi.
Bu yüzden yapabileceğim ilk şey "değil" demek.
Numara.
Ve bunu kaydedersem, bir şeyi tam sayıya dönüştürdüğümüzden emin olmak için bunu çalıştırırım.
Pekala, şimdi value literal'da bir değer hatası alıyorum, bu yüzden bu dize parçası üzerinde çalıştırılamıyor.
Tamam, kodumuzu iyileştirmek için yapabileceğimiz bir başka şey de bunu bir try except bloğuna yazmak ve ardından
yakalamaktır.
Yani diyelim ki hariç.
Ve burada bir değer hatası kabul edin.
Ve hata diyelim.
Ve burada, ne istersek yapabiliriz.
Böylece hatayı istersek geri dönebilir veya havayı yükseltebiliriz.
Bizim durumumuzda, sadece havayı geri verelim.
Nedenini birazdan göstereceğim.
Şimdi, eğer bunu çalıştırırsam.
Testimin başarısız olduğunu görüyorsunuz, ancak şimdi aslında bir assertion hatası.
İddia hatası buradaki test dosyamızdan geliyor ve şunu iddia ediyorum, hey, sonuç ile değer
hatasının eşit olduğundan emin olmak istiyorum.
Şimdi burada biraz uyumsuzluk olduğunu görüyorsunuz.
Burada bir değer hatası var, sınıf değeri hatasına eşit değil.
Şimdi bu biraz hileli bir durum çünkü bir hata döndürüyoruz.
Aslında değer hatası sınıfının bir örneğidir.
Yani şöyle bir şey yapmamız gerekiyor.
"Hey, bu bir örnek." demeliyiz.
Ve deyin ki, bu neyin örneği?
Peki, sonuç bu şekilde bir değer hatası örneği mi?
Ama buradaki sorun.
Bunu biraz daha büyütelim.
Buradaki sorun assert equals'ın iki parametre, eşit olması gereken iki şey bekleyecek olmasıdır.
Ancak burada sadece bunun true döndürdüğünden, sonucun bir değer hatası örneği olduğundan emin olmak istiyorum.
Peki bunu nasıl yapabilirim?
Assert equal dışında unit test'in bize sunduğu birkaç yöntem daha var.
Birim test dokümantasyonuna gidersem, burada ilk satırda assert metotlarının listesi yazıyor.
Burada, kodumuzu test etmek ve onaylamak için kullanılan tüm yöntemlerin bunlar olduğunu görüyorum.
Muhtemelen bu iddianın doğru olmasını istiyoruz.
Bir şeyin doğru olup olmadığını kontrol etmek için.
Yani eğer iddia edersem.
Bu doğru.
Ve testimi yaptım.
Bunu temizleyelim ve testimi tekrar çalıştıralım.
Al bakalım.
İki test yaptım ve her şey yolunda görünüyor.
Ve tekrar, bunun üzerinden geçmek için.
Neden böyle oldu?
Test dosyamı çalıştırıyorum.
Ve sonra testi çalıştıracağım, iyi olacak şeyleri yapacağım.
Sonra test parametresinin gerçekten istemediğimiz bir şey olduğu ikinci kısmı yapıyorum, bu sadece
bir dize parçası.
Sonuç bize bir değer hatası verecektir çünkü bu hatayı yakaladık ve şimdi hatayı döndürüyoruz.
Ve son olarak, bu kod parçasını çalıştırıyoruz.
Hey, bu doğru mu?
Sonuç bir değer hatası mı olacak?
Yani burada ne yaptığımızı görüyorsunuz.
Testlerimizle yapmaya çalıştığımız şey, basitçe kırmaya çalışarak işlevimizi geliştirmektir.
Bu yüzden işlevimizi kırmak ve şunu görmek istiyoruz: Hey, bu işlevi bana bir hava vermesi için kandırabilir miyim?
Bunu yaptıktan ve bir test başarısız olduktan sonra, bir işleve geri döner ve düzeltmeye çalışırsınız.
Burada yaptığımız gibi, ki bu gerçekten çok güzel.
Bu, işlev mükemmel hale gelene kadar bir şeyleri denediğiniz ve bozduğunuz testlerde yaygın bir uygulamadır.
Şimdi burada zaman ayırmanızı ve bu işlevi kırıp kıramayacağınızı görmenizi ve belki bir sonraki videoda birkaç
test daha eklemenizi istiyorum.
Bu işlevi daha da iyi hale getirmek için birkaç tane daha ekleyeceğim.
Bir sonrakinde görüşürüz.