2016-05-20 46 views
0

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

我已经试过这

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

但是我得到的错误

TypeError: 'Enquiry' object is not callable

我不太得到的东西,没有任何人知道正确的方法来测试电子邮件验证?

回答

2

当您拨打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() 
+0

ValidationError可以 进口'从django.core.exceptions导入ValidationError' – Ullullu