UnitTest break on failure
Scott David Daniels
Scott.Daniels at Acm.Org
Tue Feb 10 14:27:57 EST 2009
Qian Xu wrote:
> i am writing unit tests and have got a problem:
> I want to test some code sequence like:
>
> self.assertEquals(testMethod1(), expected_value1);
> self.assertEquals(testMethod2(), expected_value2);
>
> However, if the first test item is failed, no more tests will be executed.
> Can I tell Python,
> 1. go ahead, if a failure is occurred.
> 2. stop, if an error is occurred?
Well, each test should be independent, so generally you are talking
about multiple tests. If you really want a test to see if you get
through a sequence in a single test:
import unittest
...
class MyTest(unittest.TestCase):
def test_multi_step(self):
expectations = [(expected_value1, testMethod1),
(expected_value2, testMethod2),
(final_expected, another_test, arg1, arg2)]
try:
for step, ops in enumerate(expectations):
self.assertEquals(ops[0], ops[1](*ops[2:]))
except Exception, why:
raise ValueError('Step %s Failed: %s' % (step, why))
# here the test passed.
...
if __name__ == '__main__':
unittest.main()
Note this gives you less information (the traceback doesn't go down
to the actual error), but it shows you what step failed.
--Scott David Daniels
Scott.Daniels at Acm.Org
More information about the Python-list
mailing list