24 AÄžUSTOS 2009, PAZARTESÄ°
Python birim temel ve alt sınıf test
Ben şu anda test kümesini paylaşan birkaç birim testleri var. İşte size bir örnek:
import unittest
class BaseTest(unittest.TestCase):
def testCommon(self):
print 'Calling BaseTest:testCommon'
value = 5
self.assertEquals(value, 5)
class SubTest1(BaseTest):
def testSub1(self):
print 'Calling SubTest1:testSub1'
sub = 3
self.assertEquals(sub, 3)
class SubTest2(BaseTest):
def testSub2(self):
print 'Calling SubTest2:testSub2'
sub = 4
self.assertEquals(sub, 4)
if __name__ == '__main__':
unittest.main()
Yukarıda çıktı
Calling BaseTest:testCommon
.Calling BaseTest:testCommon
.Calling SubTest1:testSub1
.Calling BaseTest:testCommon
.Calling SubTest2:testSub2
.
----------------------------------------------------------------------
Ran 5 tests in 0.000s
OK
Bir ÅŸekilde ilk testCommon
denir böylece yukarıda yeniden yazmak var mı?
DÜZENLEME: Yukarıda 5 testler yerine, SubTest1 sadece 4 testleri, 2 ve SubTest2 başka 2 çalıştırmak istiyorum. Python unittest kendi özgün BaseTest çalışıyor gibi görünüyor ve bunun olmasını engellemek için bir mekanizma lazım.
CEVAP
24 AÄžUSTOS 2009, PAZARTESÄ°
Ortak testleri ile sınıf değil bu yüzden Birden çok devralma kullanın, deneme durumu kendisi devralır.
import unittest
class CommonTests(object):
def testCommon(self):
print 'Calling BaseTest:testCommon'
value = 5
self.assertEquals(value, 5)
class SubTest1(unittest.TestCase, CommonTests):
def testSub1(self):
print 'Calling SubTest1:testSub1'
sub = 3
self.assertEquals(sub, 3)
class SubTest2(unittest.TestCase, CommonTests):
def testSub2(self):
print 'Calling SubTest2:testSub2'
sub = 4
self.assertEquals(sub, 4)
if __name__ == '__main__':
unittest.main()
Bunu PaylaÅŸ:
Nasıl python django birim test ederken...
Python birim test veri yazdırılıyor...
Python: verilen sınıf hiyerarşisi için...
Nasıl Python (süper) temel sınıf başla...
Bir temel sınıf'un arama classmet...