在Django中测试ValidationError

时间:2016-05-20 10:15:39

标签: django django-unittest

如果我有一个名为Enquiry的模型,其属性为email,我该如何检查使用无效的电子邮件创建查询会引发错误?

我试过这个

def test_email_is_valid(self):
    self.assertRaises(ValidationError, Enquiry.objects.create(email="testtest.com"))

但是我得到了错误

  

TypeError:'查询'对象不可调用

我没有得到什么,是否有人知道测试电子邮件验证的正确方法?

1 个答案:

答案 0 :(得分:4)

当您致电save()create()时,Django不会自动验证对象。您可以通过调用full_clean方法触发验证。

def test_email_is_valid(self):
    enquiry = Enquiry(email="testtest.com")
    self.assertRaises(ValidationError, enquiry.full_clean)

请注意,您不要在上面的代码中调用full_clean()。您可能更喜欢上下文管理器方法:

def test_email_is_valid(self):
    with self.assertRaises(ValidationError):
        enquiry = Enquiry(email="testtest.com")
        enquiry.full_clean()