assertraises behaviour

Ulrich Eckhardt ulrich.eckhardt at dominolaser.com
Tue Jul 17 06:34:29 EDT 2012


Am 17.07.2012 11:06, schrieb andrea crotti:
> import unittest
>
> class TestWithRaises(unittest.TestCase):
>      def test_first(self):
>          assert False
>
>      def test_second(self):
>          print("also called")
>          assert True
>
> if __name__ == '__main__':
>      unittest.main()
>
> in this case also the second test is run even if the first fails..

The reason for that is that the unit testing framework catches and 
handles the error. It calls both test functions in some unspecified 
order and logs the result. Calls to two separate test functions are 
thereby separated from each other. This is intentionally so, but I think 
you can also give the unit testing framework a flag that makes it abort 
after the first error. In no way will the exception escape from the 
unittest.main() call though, it is all caught and handled inside, also 
by intention.


> But that's probably easy because we just need to catch exceptions for
> every method call, so it's not exactly the same thing..

I don't understand what you want to say here. I also don't understand 
what your problem in general is. I guess there are some expectations 
which are not satisfied, but you haven't explained those explicitly yet.

Uli




More information about the Python-list mailing list