Flask Tutorial Unittest

9-FlaskUnittest

Unit Testing

  • Projemizde yaptığımız değişikliklerden sonra projemizin hala çalıştığından emin olmak için unit testi yapmak oldukça faydalı hatta gereklidir.
  • Python'ın unittest paketi ile unit test işlemini gerçekleştirelim.
  • blog/tests.py
 
  • Kodlarımızı biraz açıklayalım:

    • class UserModelCase(unittest.TestCase):; unittest paketinden TestCase sınıfını miras alıyoruz.
    • def setUp(); methodu test fonksiyonlarından hemen önce çalışan methoddur. CamelCase yazılması gerekiyor. Bütün test fonksiyonlarında ortak olarak çalıştırılması istenen kodlar için bu methodu kullanabiliriz. Örneğin bütün test fonksiyonlarında 2-3 adet nesne oluşturulacaksa burada tanımlamamız yeterli.
    • setUp() içerisinde SQLITE konfigürasyonunu değiştirdik. db.create_all() methodunu çağırınca bütün veritabanı tablolarını oluşturur.
    • def tearDown(); methodu test fonksiyonlarından hemen sonra çalışan methoddur.
    • test_password_hashing(), test_follow() ... methodları projemize ait test fonksiyonlarıdır. Method isimlerinde hepsinin başına test_ gelmesi gerekiyor.
    • self.assertFalse() methoduna verdiğimiz parametre sonucu False dönmesi gerekiyor. Örneğin yanlış parola girildiğinde False vermesini bekliyoruz ve eğer False veriyorsa test başarılı demektir.
    • self.assertTrue() methoduna verdiğimiz parametre sonucu True dönmesi gerekiyor. Örneğin adnan kullanıcısının parolasını 2344x olarak atama yaptıktan sonra, check_password() methodu ile kontrol edince True dönüyor. Bu da testin başarılı olduğunu gösterir.
    • self.assertEqual() methoduna 2 adet parametre verip karşılaştırma yapıyoruz. Eğer karşılaştırma sonucu doğru ise test başarılı demektir. Örneğin; u1 olarak tanımlanan adnan, u2 olan kayace kullanıcısını takip edince (follow), self.assertEqual(u1.followed.first().username, 'kayace') sorgusu u1'in takip ettiği kullanıcı adının(username) kayace olduğunu veriyor ve test başarılı olarak geçiyor.
    • if __name__ == '__main__' : olarak belirtilen kısımda unittest.main() diyerek bu modülü(tests.py) doğrudan çalıştıracağımızı söylüyoruz.
    • Mdülü terminal den çalıştırdığımızda aşağıdaki gibi 4 tane test fonksiyonumuzun da testten başarılı(OK) olarak geçtiğini göreceğiz:
 
  • Bundan böyle projedeki her değişiklik için test fonksiyonu yazılmalı ve çalıştırılmalı.
  • Yeni özellikler eklendikçe yeni testler de yazılmalıdır.

 

Yorumlar