Test senaryolarını yazarken Python'un setUp
ve tearDown
yöntemlerinin kullanımını açıklayabilir mi, bunun dışında setUp
test yöntemini çağırmadan hemen önce tearDown
çağrılır ve çağrıldıktan hemen sonra çağrılır mı?
Yanıtlar:
Genel olarak, kurulum için tüm ön koşul adımlarını ve tearDown için tüm temizleme adımlarını eklersiniz.
Sen örneklerle daha fazla bilgi bulabilirsiniz burada .
Bir setUp () yöntemi tanımlandığında, test çalıştırıcısı her testten önce bu yöntemi çalıştırır. Benzer şekilde, bir tearDown () yöntemi tanımlanırsa, test çalıştırıcısı her testten sonra bu yöntemi çağırır.
Örneğin, öğelerin var olmasını veya belirli bir durumu gerektiren bir testiniz var - bu nedenle bu eylemleri (nesne örneklerini oluşturma, db'yi başlatma, kuralları hazırlama vb.) Kuruluma koyarsınız.
Ayrıca bildiğiniz gibi, her testin başladığı yerde durması gerekir - bu, uygulama durumunu ilk durumuna geri yüklememiz gerektiği anlamına gelir - ör. Dosyaları kapatma, bağlantılar, yeni oluşturulan öğeleri kaldırma, işlemleri geri çağırma vb. - tüm bunlar adımlar tearDown'a dahil edilmelidir.
Dolayısıyla fikir, testin kendisinin sonucu almak için yalnızca test nesnesi üzerinde gerçekleştirilecek eylemleri içermesi gerektiğidir; setUp ve tearDown ise test kodunuzu temiz ve esnek bırakmanıza yardımcı olacak yöntemlerdir.
Bir grup test için bir setUp ve tearDown oluşturabilir ve bunları bir üst sınıfta tanımlayabilirsiniz - böylece bu tür testleri desteklemeniz ve genel hazırlıkları ve temizlemeleri güncellemeniz kolay olacaktır.
Kolay bir örnek arıyorsanız, lütfen aşağıdaki bağlantıyı örnekle kullanın
Test paketindeki tüm testlerde ortak olan kodu dışarıda bırakmak için bunları kullanabilirsiniz.
Testlerinizde çok sayıda tekrarlanan kodunuz varsa, bu kodu setUp / tearDown'a taşıyarak kısaltabilirsiniz.
Bunu, test verileri oluşturmak için (örn. Sahte / taklitler ayarlamak) veya sahte işlevlerle işlevler ortaya çıkarmak için kullanabilirsiniz.
Entegrasyon testi yapıyorsanız, kurulumda çevresel ön koşulları kontrol et seçeneğini kullanabilir ve herhangi bir şey doğru ayarlanmamışsa testi atlayabilirsiniz.
Örneğin:
class TurretTest(unittest.TestCase):
def setUp(self):
self.turret_factory = TurretFactory()
self.turret = self.turret_factory.CreateTurret()
def test_turret_is_on_by_default(self):
self.assertEquals(True, self.turret.is_on())
def test_turret_turns_can_be_turned_off(self):
self.turret.turn_off()
self.assertEquals(False, self.turret.is_on())
10 testli bir süitiniz olduğunu varsayalım. Testlerin 8'i aynı kurulum / sökme kodunu paylaşır. Diğer ikisi yok.
kurulum ve sökme, bu 8 testi yeniden düzenlemenin güzel bir yolunu sunar. Şimdi diğer 2 testle ne yapacaksınız? Onları başka bir test senaryosuna / süite taşırsınız. Bu nedenle, kurulum ve sökmeyi kullanmak, testleri vakalara / paketlere ayırmanın doğal bir yolunu da sağlar