If you are using Python 2.7 or above, you can use the ability of assertRaises to be used as a context manager and do:
with self.assertRaises(TypeError):
self.testListNone[:1]
If you are using Python 2.6, another way beside the one given until now is to use unittest2 which is a back port of unittest's new features to Python 2.6, and you can make it work using the code above.
N.B: I'm a big fan of the new feature (SkipTest, test discovery, etc.) of unittest, so I intend to use unittest2 as much as I can. I advise to do the same, because there is a lot more than what unittest come with in Python 2.6 or lower.
Answer from mouad on Stack OverflowIf you are using Python 2.7 or above, you can use the ability of assertRaises to be used as a context manager and do:
with self.assertRaises(TypeError):
self.testListNone[:1]
If you are using Python 2.6, another way beside the one given until now is to use unittest2 which is a back port of unittest's new features to Python 2.6, and you can make it work using the code above.
N.B: I'm a big fan of the new feature (SkipTest, test discovery, etc.) of unittest, so I intend to use unittest2 as much as I can. I advise to do the same, because there is a lot more than what unittest come with in Python 2.6 or lower.
The problem is the TypeError gets raised 'before' assertRaises gets called since the arguments to assertRaises need to be evaluated before the method can be called. You need to pass a lambda expression like:
self.assertRaises(TypeError, lambda: self.testListNone[:1])