Возможно, это не лучший способ сделать это, поскольку я учусь тестировать с помощью Django, но когда я пытаюсь протестировать представление, которое включает в себя форму, я получаю:
AssertionError: <User[37 chars], fields=(email;first_name;last_name;role;password1;password2)> != <User[37
chars], fields=(email;first_name;last_name;role;password1;password2)>
Без учета того факта, что сообщение не очень полезно, так как две части уравнений выглядят одинаково, тест выглядит следующим образом:
class SignUpViewTest(TestCase):
def test_get_request(self):
path = '/signup/'
data = {
'email': '',
'first_name': '',
'last_name': '',
'role': 'Student',
'password1': '',
'password2': '',
}
form = UserCreationForm()
response = self.client.get(path, data=data)
print(response.context['form'])
print(form)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.context['form'], form)
Будучи представлением:
def signup(request):
form = UserCreationForm()
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, f'Good news {form.cleaned_data["first_name"]}, you have successfully signed up.')
return redirect(home)
template_name = 'signup.html'
context = {
'form': form,
}
return render(request, template_name, context)
Теперь, как вы можете видеть, я печатаю две формы (одна - контекст ответа, а другая - пустую форму, которую я запрашиваю.
Я не думаю, что вам нужно видеть код из моделей и форм как сообщение об ошибке является довольно явным, даже если я не вижу ошибки.
Кроме того, я проверил два напечатанных утверждения (HTML) на Diffchecker, и он говорит, что эти два файла идентичны?
Как тогда может быть ошибка?
Очевидно, что если вам понадобится больше кода, я его опубликую.
Спасибо