2015-02-13 20 views
5

Atlanmış testlerin toplam test sayısını ve çalıştırma sayısını saymak için bir onaylama seçeneğinin olması mümkün mü? Ve testten sonra test sayısı başarısız oldu (bunun çıktıda görülebildiğini biliyorum). Ben büyük birpython sayım sayımı testleri

Thx bir sürü

+1

Şimdiye kadar neler denediniz? Lütfen burada okuyun: http://stackoverflow.com/help/how-to-ask – aberna

+0

sadece unixest keşif fonksiyonellik çalıştı ama hangi testler atlandı – user3142208

cevap

5

birçok denemeler ve hatalar sonra nihayet scoffey's answer dayanarak bu çalışma ...

aldık.

Yardım edin.

python test.py > result.txt 

Result.txt ile

import unittest 

class MyTest(unittest.TestCase): 

    currentResult = None # holds last result object passed to run method 

    @classmethod 
    def setResult(cls, amount, errors, failures, skipped): 
     cls.amount, cls.errors, cls.failures, cls.skipped = \ 
      amount, errors, failures, skipped 

    def tearDown(self): 
     amount = self.currentResult.testsRun 
     errors = self.currentResult.errors 
     failures = self.currentResult.failures 
     skipped = self.currentResult.skipped 
     self.setResult(amount, errors, failures, skipped) 

    @classmethod 
    def tearDownClass(cls): 
     print("\ntests run: " + str(cls.amount)) 
     print("errors: " + str(len(cls.errors))) 
     print("failures: " + str(len(cls.failures))) 
     print("success: " + str(cls.amount - len(cls.errors) - len(cls.failures))) 
     print("skipped: " + str(len(cls.skipped))) 

    def run(self, result=None): 
     self.currentResult = result # remember result for use in tearDown 
     unittest.TestCase.run(self, result) # call superclass run method 

    def testA(self): 
     self.assertTrue(True) # succeeds 

    def testB(self): 
     self.assertTrue(False) # fails 

    def testC(self): 
     self.assertTrue(1 + None is None) # raises TypeError 

    @unittest.skip("skip it") # skipped 
    def testD(self): 
     self.assertTrue("whatever") 

if __name__ == '__main__': 
    unittest.main() 

çalıştırmak komut:

tests run: 3 
errors: 1 
failures: 1 
success: 1 
skipped: 1 

ben bu en iyi yol olduğundan emin değilim, ama işe yarıyor. Unittest modülü kullanımı kolay ama ustalaşması zor, şimdi bunun hakkında çok az şey biliyorum.

+0

awsome thx atlanmış t mümkün değilim çok yardımcı olur! – user3142208

+0

Bir daha gözden geçirmek ister misiniz ... – laike9m

+0

Yeni :( – user3142208

1

JSON bildirmede unittest için herhangi bir şekilde bilmiyorum olacağını programlama götürün wan eğer bir json nehre atarken istiyorum. XML formatını sakıncası yoksa

<testsuite name="nosetests" tests="3" errors="0" failures="1" skip="1"> 

, o zaman bu bir çözümdür: Burada

nosetests --with-xunit --xunit-file=mytests.xml mytests.py 

bu XML dosyası bir alıntıdır: Ben nose XML formatında çıkış olanağı sonucudur farkındayım düşünmek. Ayrıca burnun bir JSON eklentisi olduğunu duydum, ancak henüz onunla oynamadı.