After many trials and mistakes, I finally got this job ...
Based on scoffey answer .
Hope this helps.
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 the script with
python test.py > result.txt
result.txt:
tests run: 3 errors: 1 failures: 1 success: 1 skipped: 1
I am not sure if this is the best way, but it works. Unittest is easy to use, but hard to master, now I feel that I know little about it.
source share