Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Django中测试UpdateView?_Django_Unit Testing_Django Testing - Fatal编程技术网

如何在Django中测试UpdateView?

如何在Django中测试UpdateView?,django,unit-testing,django-testing,Django,Unit Testing,Django Testing,我试图在Django中测试一个视图(UpdateView),但这不起作用。是用于编辑用户名和姓氏(基本)的视图 这是一种观点: class UserProfileEditView(LoginRequiredMixin, UpdateView): model = User template_name = 'user/edit.html' fields = ['first_name', 'last_name'] def get_success_url(self):

我试图在Django中测试一个视图(UpdateView),但这不起作用。是用于编辑用户名和姓氏(基本)的视图

这是一种观点:

class UserProfileEditView(LoginRequiredMixin, UpdateView):
    model = User
    template_name = 'user/edit.html'
    fields = ['first_name', 'last_name']

    def get_success_url(self):
        redirect_to = self.request.GET.get(
            'next',
            reverse('main:user_detail', args=[self.request.user.pk])
        )
        return redirect_to
urls.py
文件中,我有以下路径:

path(
    'user/<pk>/edit/',
    views.UserProfileEditView.as_view(),
    name='user_edit'
),
这是我运行
python manage.py测试时出现的错误:

AssertionError: 'laugh' != ''
这意味着第一个_的名字没有像预期的那样从“笑”变为“笑”


我做错了什么?

罗曼,我希望你做得很好! 为什么您要尝试使用post更新用户?为什么不使用补丁? 还有,为什么您期望的是302重定向而不是200 OK

要更新,您需要使用patch[如果您提供用户所需的每个字段,则需要使用put]。这将从rest\u框架导入状态导入

response = self.client.patch(
    reverse('main:user_edit', kwargs={'pk': user.pk}),
    post_data
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
user.refresh_from_db()
self.assertEqual(user.first_name, '')

希望这对您有用:)

尝试
'
而不是
'
它不起作用。这不是关于REST框架,而是关于常规Django视图和表单,它们接受数据作为POST,成功后使用302重定向。
response = self.client.patch(
    reverse('main:user_edit', kwargs={'pk': user.pk}),
    post_data
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
user.refresh_from_db()
self.assertEqual(user.first_name, '')