Django тест, показывающий утверждение: ошибка, даже если утверждение верно - PullRequest
0 голосов
/ 27 марта 2020

Возможно, это не лучший способ сделать это, поскольку я учусь тестировать с помощью 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, и он говорит, что эти два файла идентичны?

Как тогда может быть ошибка?

Очевидно, что если вам понадобится больше кода, я его опубликую.

Спасибо

1 Ответ

1 голос
/ 27 марта 2020

Проблема в том, что вы сравниваете два разных экземпляра одного и того же объекта. Пожалуйста, смотрите это для более подробной информации.

...