def assert_raises(exc_type, expr, msg=None):
try:
expr()
except exc_type:
pass
else:
failmsg = '{} was not raised'.format(exc_type.__name__)
if msg is not None:
failmsg += ': {}'.format(msg)
assert False, failmsg
class assertRaises:
def __init__(self, expected):
self.expected = expected
self.exception = None
def __enter__(self):
return self
def __exit__(self, exc_type, exc_val, exc_tb):
if exc_type is None:
failmsg = '{} was not raised'.format(self.expected.__name__)
assert False, failmsg
if not issubclass(exc_type, self.expected):
return False
self.exception = exc_val
return True
class TestFailingBool:
def __bool__(self):
raise RuntimeError
class TestFailingIter:
def __iter__(self):
raise RuntimeError