我正在使用django.test.TestCase进行Django测试,我想知道检测验证错误的pythonic方法。我已经提出了下面这个有效,但感觉有点长,并且在大量测试中容易出错
self.valid_account.contact_number = "1234567" # Too short
with self.assertRaises(ValidationError):
try:
self.valid_account.full_clean()
self.fail("Did not raise validation error")
except ValidationError as e:
self.assertTrue('contact_number' in e.message_dict)
raise e
有没有更好的方法来检查和测试异常?
答案 0 :(得分:3)
如果您手动处理异常,则使用assertRaises
毫无意义。如果您还需要检查异常,the solution is documented:
上下文管理器将捕获的异常对象存储在其exception属性中。如果打算对引发的异常执行附加检查,这可能很有用
所以在你的情况下,这将是:
self.valid_account.contact_number = "1234567" # Too short
with self.assertRaises(ValidationError) as cm:
self.valid_account.full_clean()
self.assertTrue('contact_number' in cm.exception.message_dict)