Я использую следующий декоратор, вдохновленный одним из носа :
def raises(exception, message):
@decorator
def decorate(func, *args, **kwargs):
name = func.__name__
try:
func(*args, **kwargs)
except exception, e:
if message is not None:
assert_equal(str(e), message)
except:
raise
else:
msg = "%s() did not raise %s" % (name, exception.__name__)
raise AssertionError(msg)
return decorate
Так что я могу сделать что-то вроде:
class TestMyThing(TestCase):
@raises(ValueError, "T should not exceed 100, but has value 120")
def test(self):
some_code_that_provoke_exception()
@decorator
из пакета оформителя . Вы можете написать декоратор руками, если по какой-то причине не хотите вводить зависимость.