Я пытаюсь написать тесты для моего приложения чата 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'})