piton

Python Birim Testi Eğitimi

Python Birim Testi Eğitimi

Birim testi, herhangi bir kodun ayrı birimleri için yazılım mühendisliğinde kullanılan bir test yöntemidir. Kullanıcılar, kaynağın durumunu ve kodun ne kadar kullanılmaya uygun olduğunu belirlemek için bireysel testler yapabilirler. Bu şekilde kullanıcılar kod kalitesini test edebilir.

Geliştirme süreci tamamlandıktan sonra test yapılır. Kullanıcılar, test komut dosyasının test kriterlerine göre doğrulanması gerektiğinde de teste başlayabilir. Geliştiricilerin kaynak kodunun manuel türlerini yazmaları bekleniyor. Genel olarak, birim test kodlarını manuel olarak yazmak yoğun bir iştir ancak Python'da bu, unittest adı verilen yerleşik bir işlev kullanılarak yapılır.

Ünite testi

Python'daki testler, unittest çerçevesi tarafından yapılır. Birim testi, kodu gelecekte de güvenli ve kullanımı kolay hale getirir. Kullanıcılar genellikle bu durumları tahmin edemez, ancak bunları kolayca ele alabilir. Unittest, tüm modül, belirli bir işlev ve tüm bir arabirim (sınıf/modül) olabilir.

Kodunuz için birim testleri nasıl yazılır?

Kodunuz için birim testleri yazmak için, her zaman tüm kodunuzdan test edilebilecek en küçük birim ile başlayın ve ardından diğer birimlere ilerleyin. Bu şekilde, tüm birim testi oluşturmak için seçilen en küçük birimin nasıl etkileşime girdiğini kontrol edeceksiniz.

Python'un birim test çerçevesi, Java'nın Junit'i dikkate alınarak oluşturulmuştur. Diğer farklı dillerde yapılan birim testi gibi aynı özelliklere sahiptir. Python'daki birim testi çerçevesi, otomasyon testinde, kurulum paylaşımında, birçok testin tek bir büyük sette toplanmasında ve bağımsız testlerde yardımcı olur

Örnekler:

Şimdi, örnekte, sum() işlevini kullanarak Python kodundaki toplamı bulmak için kodu kontrol ediyoruz. Bu toplamın cevabı doğru olan 12 olmalıdır.

>>> assert sum([2, 4, 6]) == 12, "12'ye eşit olmalı"

Öte yandan, toplamı () yanlış olan yanlış bir çıktı değeri yazmaya çalışırsak, sonuçlar başarısız olur. AssertionError döndürür. Tarafımızdan belirtilen çıktı yanlış, yani 12 ve asıl çıktı 6 olmalı, bu nedenle bu hatayı verdi.

>>> assert sum([2, 2, 2]) == 12, "12'ye eşit olmalı"

Şimdi, REPL üzerinde test etmek yerine, yeni bir Python dosyası koyacağız ve onu adlandıracağız test_sum.p

>> def testValue_sum():
assert sum([2, 4, 6]) == 12, "12'ye eşit olmalı"
eğer __name__ == "__main__":
testValue_sum()
print("Her şey doğru bir şekilde geçti")

Test senaryosunu yazdıktan sonra test_sum'un bulunduğu dizine erişebilirsiniz.py dosyasını seçin ve ardından şunu yazın:

$ piton test_sum.p

Çıktı:

Çıktı değeri, görüntülenene benzer olduğunda, doğru değeri onaylayacaktır.

için başka bir dosya oluşturalım .p toplamı test etmek. Kodda görüntülenen örnek ve kopyalanarak örnek olarak kullanılabilir:

def testValue_sum():
assert sum([2, 4, 6]) == 12, "12'ye eşit olmalı"
def testValue_sum_tuple():
assert sum((1, 1, 1)) == 6, "6'ya eşit olmalı"
eğer __name__ == "__main__":
testValue_sum()
testValue_sum_tuple()
print("Her şey doğru bir şekilde geçti")

Bu sefer dosyayı tekrar adlandıracağız test_sum.p 

İlk kod bloğu doğru, ikinci kod bloğu yanlış ve bir hatası var, bu nedenle çıktımız aynı şeyi döndürecek.

Şimdi, projeyi kaydettiğimiz dizinin dizinine geri döneceğiz .py dosyası, ve ardından aşağıdaki komutu kullanarak dosyayı test edin:

$ piton test_sum.p

Çıktı:

Giriş kodunda bir hata olduğu için bu sefer yanıt olarak Onaylama hatası döndürmesi bekleniyor.

Unittest kullanımına örnek:

Unittest gereksinimleri, kullanıcıların testlerini farklı yöntemler olarak sınıflara koyabilmeleri, kullanıcıların bir dizi onaylama yöntemi kullanabilmeleri ve assert ifadesi yerine TestCase sınıfının kullanılabilmesidir.

Kullanıcılar, önceki yarıda tartışılan örneği en iyi test senaryosuna dönüştürebilir.

İlk olarak, unitest kütüphanesini içe aktarın. Ardından, farklı sınıflardan bir TestSum oluşturmanız gerekir.

Aşağıda tartışılan kod için yeni bir dosya oluşturun:

içe aktarma birim testi
sınıf TestSum(birimtest.Test durumu):
def testValue_sum(self):
öz.assertEqual(toplam([2, 4, 6]), 12, "12'ye eşit olmalıdır")
def testValue_sum_tuple(self):
öz.assertEqual(sum((1, 1, 1)), 6, "6'ya eşit olmalıdır")
if __name__ == '__main__':
ünite testi.ana()

Bu komutu yürüttüğünüzde, çıktıda bir nokta vardır. Bu başarı anlamına gelir ve bir F bir başarısızlık anlamına gelir.

Yani, başarılıyız ve bir diğeri başarısızlık.

Çıktı:

İlk Testi Yazma:

Yeni bir proje klasörü oluşturun ve ardından yeni bir klasör oluşturun, buna sum_file diyeceğiz. İçinde bir dosya oluşturun ve adını __init__.p.  Proje klasörünü şu şekilde yapın:

proje/

└── toplam_dosyası/
└── __init__.p

O zaman my_sum/__init__ dosyasını açmanız gerekir.py ve yeni bir işlev oluşturun sum(). Birçok değer eklemek yinelenebilir (bir liste, demet veya küme) olacaktır:

tanım toplamı(arg):
total_ValueHesaplanmış = 0
arg'deki val için:
total_ValueHesaplanan += değer
toplam_ValueHesaplanmış döndür

Ardından, bir oluşturmanız gerekir Ölçek dosya. Testler yazarak başlayın ve adlı bir test dosyası oluşturun testDosyası.p. Uygulamayı içe aktarmak için ve test edilmesi gerekir, dosyayı yerleştirin testDosyası.p paketin klasörünün üstünde. Aşağıdaki, dizininizin genel görünümü olacaktır:

proje/

├── toplam_dosyası/
│ └── __init__.p
|
└── testDosya.p

Kodu test etmek için daha önce tartışıldığı gibi, terminal penceresinde/komut satırında aşağıdaki komutu kullanabilirsiniz:

$ python -m birim test testi

Sonuç

Makale Python'da birim testi sürecini tartışıyor. Test etme, yazılım mühendisliğinin, kodları daha küçük parçalara bölme ve ardından bunları birer birer deneme yeteneğine sahip kullanışlı özelliklerinden biridir. Kullanıcılar ayrıca tüm test örneklerini/birim kodlarını tek bir büyük koleksiyonda derleyebilirler. Unittest, Python'da testi kolay bir şekilde kullanmak için kullanılan bir işlevdir.

How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
Remap your mouse buttons differently for different software with X-Mouse Button Control
Maybe you need a tool that could make your mouse's control change with every application that you use. If this is the case, you can try out an applica...
Microsoft Sculpt Touch Wireless Mouse Review
I recently read about the Microsoft Sculpt Touch wireless mouse and decided to buy it. After using it for a while, I decided to share my experience wi...