如何从ValidationError访问错误消息?

时间:2015-11-12 17:03:37

标签: python django

在我的test.py中,我有:

with self.assertRaises(ValidationError):
    validate_zipfile(test_zip_path + '.zip')

这是按预期工作的。我还想访问此ValidationError引发的错误消息,所以我可以这样做:

self.assertEqual(#error that I extract from the code above, 'Zip file not in correct format.')

1 个答案:

答案 0 :(得分:5)

存储assertRaises()上下文管理器,它有一个exception属性供您反省引发的异常:

with self.assertRaises(ValidationError) as exception_cm:
    validate_zipfile(test_zip_path + '.zip')

exception = exception_cm.exception
self.assertIn('Zip file not in correct format.', exception.messages)

您可以使用Django特定的assertRaisesMessage() method,但考虑到该测试执行简单的子字符串测试(例如,您可能会遇到误报,您测试的是较长消息的子字符串)。由于ValidationError处理邮件列表,因此针对ValidationError.messages的测试会更加健壮。