che sto cercando di fare qualcosa di simile di recente e ho trovato una via d'uscita:
import unittest
class MyTestResult(unittest.TestResult):
def addFailure(self, test, err):
# here you can do what you want to do when a test case fails
print('test failed!')
super(MyTestResult, self).addFailure(test, err)
def addError(self, test, err):
# here you can do what you want to do when a test case raises an error
super(MyTestResult, self).addError(test, err)
class MyUT(unittest.TestCase):
def test_fail(self):
self.assertEqual(1, 2, '123')
self.assertTrue("ABc".isupper())
if __name__ == '__main__':
unittest.main(testRunner=unittest.TextTestRunner(resultclass=MyTestResult))
Se si desidera eseguire lavori diversi in base alle diverse classi di test, è possibile ottenerlo in questo modo:
import unittest
class MyUT(unittest.TestCase):
class TestResult(unittest.TestResult):
def addFailure(self, test, err):
print('do something when test case failed')
super(MyUT.TestResult, self).addFailure(test, err)
def addError(self, test, err):
print('test case error')
super(MyUT.TestResult, self).addError(test, err)
def test_fail(self):
self.assertEqual(1, 2, "1=2")
class MyUT2(unittest.TestCase):
class TestResult(unittest.TestResult):
def addFailure(self, test, err):
print('do something else when test case failed')
super(MyUT2.TestResult, self).addFailure(test, err)
def addError(self, test, err):
print('test case error')
super(MyUT2.TestResult, self).addError(test, err)
def test_fail(self):
self.assertEqual(1, 2, "1=2")
if __name__ == '__main__':
classes = [MyUT, MyUT2]
for c in classes:
suite = unittest.TestLoader().loadTestsFromTestCase(c)
unittest.TextTestRunner(resultclass=c.TestResult).run(suite)
possibile duplicato del [Ottenere risultati unittest del Python in un metodo tearDown()] (http://stackoverflow.com/questions/4414234/getting-pythons-unittest-results-in-a-teardown-method) – ronakg
Per chiunque abbia ancora questo problema, negli ultimi 2 anni ho utilizzato il suggerimento qui menzionato e funziona perfettamente: https://stackoverflow.com/a/23176373/2535477 – skamsie