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.dani...@acm.org
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to