Тестовая форма Django ValidationError - PullRequest
0 голосов
/ 31 мая 2018

В моем приложении я расширил UserCreationForm в RegisterForm, и я пытаюсь проверить, возвращает ли форма регистра ValidationError, если password1 не равен password2.В каждой попытке теста я получал AssertionError: ValidationError not raised.

class RegisterViewTestCase(TestCase):

    def setUp(self):
        self.bad_data = {
            'email': self.email,
            'password1': 'valid_password1',
            'password2': 'valid_password2'
        }

    def test_register_registers_invalid_data(self):
        form = RegisterForm(self.bad_data)
        self.assertFalse(form.is_valid())

        with self.assertRaises(ValidationError):
            form.full_clean()

forms.py

class RegisterForm(UserCreationForm):

    class Meta:
        model = CustomUser
        fields = ['email']

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['email'].widget.attrs.update({'autofocus': True})

Любая подсказка, почему он не проходит тест?

1 Ответ

0 голосов
/ 31 мая 2018

Проблема заключается в вызове full_clean, который фактически не вызывает никаких ошибок валидации - вместо этого любые ошибки, вызванные методами, вызываемыми full_clean (который включает _clean_fields -> UserCreationForm.clean_password2), будут обнаружены и добавлены в ErrorDict формы.
Обратите внимание, что любое поле, которое не прошло проверку, также не будет отображаться в form.cleaned_data.

...