我有一个测试,它创建一个Django对象“忘记”设置一个字段。它应该失败,所以我检查:
p = Person.objects.create(name='test')
self.assertRaises(ValidationError, p.full_clean)
遗忘的字段是birth_date
,所以如果我拦截了异常并打印出来,那么错误就是:
{'birth_date': ['This field cannot be blank.']}`
现在我向Person
添加了另一个字段,也不应该留空。现在的错误是:
{'birth_date': ['This field cannot be blank.'], 'category': ['This field cannot be blank.']}
使用上面的代码,我默默地压制这两个错误。我需要测试代码是否会引发特定的验证错误。有没有好办法呢?现在我有了这个解决方法:
try:
p.full_clean()
except ValidationError as e:
self.assertIn('birth_date', dict(e))
self.assertEqual(len(dict(e).keys()), 1, msg="Expected one error, found more")
但是如果'birth_date'可能存在两个不同的错误,那么这也会遇到。
有更好的方法吗?