2016-05-20 3 views
0

Если у меня есть модель с именем Enquiry с атрибутом email, как я могу проверить, что создание запроса с недопустимым адресом электронной почты вызывает ошибку?Тестирование для ValidationError в Django

Я попробовал этот

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

Однако я получаю ошибку

TypeError: 'Enquiry' object is not callable

Я не совсем получить что-то, кто-нибудь знает правильный метод тестирования для проверки электронной почты?

ответ

2

Django автоматически не проверяет объекты при вызове save() или create(). Вы можете активировать проверку путем вызова метода 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

Смежные вопросы