客户端补丁在Django测试中给出400错误

时间:2019-04-10 19:03:27

标签: django testing django-rest-framework django-views

因此,基本上,当我尝试测试我的补丁程序视图时,它根本不会打补丁,因为我遇到400错误。但是,当我在运行测试服务器的同时外部调用相同的补丁程序视图时,它确实可以工作。

我尝试过的事情:

  • patch_data = json.dumps({'first_name':'test999'})
  • format ='json'

在APITestCase:

    def test_patch_update_data(self):
        self.client.force_authenticate(user=self.user)
        self.assertEqual(self.user.first_name, 'Robert')
        patch_data = {'first_name': 'test999'}
        response = self.client.patch('http://testserver/api/patch/{0}/'.format(
            self.user.id), patch_data, format='json')
        self.assertEqual(response.status_code, 200) # ERROR:GIVES 400!
        self.assertEqual(self.user.first_name, 'test999')

在views.py

class UsuariosUpdatePatchAPIView(UpdateAPIView):
    queryset = Usuarios.objects.all()
    serializer_class = UsuariosUpdateSerializer
    permission_classes = [IsAuthenticated, IsSelfUser]

错误:

self.assertEqual(response.status_code, 200)
AssertionError: 400 != 200

提前谢谢! :)

1 个答案:

答案 0 :(得分:0)

我有多傻:

如评论中所述, response.data 提供了非常有用的信息。事实证明, fist_name 字段仅接受字母!因此解决方案是将 test999 更改为没有数字的内容!