I did a simple test case:
def setUp(self):
self.testListNone = None
def testListSlicing(self):
self.assertRaises(TypeError, self.testListNone[:1])
And I am expecting the test to pass, but I am getting an exception:
Traceback (most recent call last):
self.assertRaises(TypeError, self.testListNone[:1])
TypeError: 'NoneType' object is unsubscriptable
I thought that assertRaises will pass since TypeError exception will be raised. What is the explanation?
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:
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.