So I have a generator and I want to make sure it throws an exception after a certain number of calls. So expected behaviour is this:
def generate():
yield 1
yield 2
raise Exception()
How do you check that in a test? You can't do this:
class testExample(unittest.TestCase):
def test_generatorExample(self):
self.assertRaises(Exception, a)
since a generator isn't callable.
Turns out that assertRaises is a context manager as of python 2.7, which is very cool:
class testExample(unittest.TestCase):
def test_generatorExample(self):
with self.assertRaises(Exception):
list(a)
Or for earlier versions of python you could use a lambda:
self.assertRaises(Exception, lambda: list(a))