在我的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.')
答案 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
的测试会更加健壮。