Тестирование Django UserCreationForm - form.is_valid () всегда возвращает false - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь написать тесты для моего приложения чата Django, чтобы проверить UserCreationForm. Я следую за тестовым кодом Django здесь:

https://github.com/django/django/blob/master/tests/auth_tests/test_forms.py

У меня есть приложение для пользователей, которое обрабатывает регистрацию, вход в систему и т. Д.

users / tests.py

from django.test import TestCase
from django.contrib.auth.forms import UserCreationForm

class UserCreationFormTest(TestCase):

    def test_form(self):
        data = {
            'username': 'testuser',
            'password1': 'test123',
            'password2': 'test123',
        }

        form = UserCreationForm(data)

        self.assertTrue(form.is_valid())

Я расширил форму UserCreation, добавив в нее поле электронной почты (forms.py) при регистрации.

users / forms.py

from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User

class UserRegisterForm(UserCreationForm):
    email = forms.EmailField(required=True, label='Email')

    class Meta:
        model = User
        fields = ['username', 'email', 'password1', 'password2']

Я не могу дляжизнь меня выяснила, почему

form.is_valid()

всегда возвращает False во время моего тестирования. В моем тесте у меня есть

self.assertTrue(form.is_valid())

Для выполнения тестов я запускаю

python manage.py test users

из терминала.

Фактическая регистрация, вход в систему и т. Д. Работает нормально, но мои тесты не работают должным образом!

users / views.py

from django.shortcuts import render, redirect
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from .forms import UserRegisterForm, UserUpdateForm, ProfileUpdateForm

def register(request):
    if request.method == 'POST':
        form = UserRegisterForm(request.POST)
        if form.is_valid():  # check if valid
            form.save()  # save user info
            messages.success(
                request, f'Your account has been created. You are now able to login.')
            return redirect('/users/login')
    else:
        form = UserRegisterForm()
    return render(request, 'users/register.html', {'form': form, 'title': 'Register'})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...