2015-02-13 15 views
5

Czy to możliwe, aby unittest miał opcję tou zliczać liczbę całkowitych testów pominiętych testów i liczbę biegów. A po biegu liczba testów się nie udała (wiem, że można to zobaczyć na wyjściu). Chciałbym zrzucić go w json jeśli wan zabrać go programowo że byłoby świetniePython unittest count tests

Thx o wiele

+1

Co próbowałeś do tej pory? Proszę przeczytać tutaj: http://stackoverflow.com/help/how-to-ask – aberna

+0

po prostu próbował odkryć funkcjonalność unittest, ale nie jestem w stanie przetłumaczyć, które testy zostały pominięte. – user3142208

Odpowiedz

5

Po wielu prób i błędów, ale w końcu dostałem tej pracy ...

Na podstawie scoffey's answer.

Mam nadzieję, że to pomaga.

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() 

run script z

python test.py > result.txt 

Result.txt będący wynikiem:

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

nie jestem pewien, że to jest najlepszy sposób, ale to działa. Moduł Unittest jest łatwy w użyciu, ale trudny do opanowania, teraz czuję, że niewiele o nim wiem.

+0

o wiele razy to pomaga !!! – user3142208

+0

Czy chciałbyś, aby upvote ... – laike9m

+0

Nie mam wystarczających narzędzi do wykonania upvote przepraszam za nowe :( – user3142208

1

nie wiem żaden sposób unittest zgłosić w JSON. Jestem świadomy, że nose jest wynikiem outputing w formacie XML:

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

Oto fragment z tego pliku XML:

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

Jeśli nie przeszkadza formacie XML, to jest rozwiązanie rozważać. Słyszałem również, że nos ma wtyczkę JSON, ale jeszcze z nią nie grałem.

Powiązane problemy