即使断言为真,Django测试也显示Assertion:Error

问题描述 投票:0回答:1

[这可能不是最好的方法,因为我正在学习如何使用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)

现在,正如您所看到的,我正在打印两种形式(一种是响应上下文,一种是我请求的空表单。

我认为您不需要从模型和表单中查看代码,因为错误消息非常明显,即使您看不到错误也是如此。

而且,我已经在Diffchecker上检查了两个打印的语句(HTML),并且说两个文件是相同的?

然后怎么可能有错误?

很明显,如果您需要更多代码,我会发布它。

谢谢

django django-testing
1个回答
1
投票

问题是,您正在比较同一对象的两个不同实例。有关更多详细信息,请参见this

© www.soinside.com 2019 - 2024. All rights reserved.