因此,基本上,当我尝试测试我的补丁程序视图时,它根本不会打补丁,因为我遇到400错误。但是,当我在运行测试服务器的同时外部调用相同的补丁程序视图时,它确实可以工作。
在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
提前谢谢! :)
答案 0 :(得分:0)
如评论中所述, response.data 提供了非常有用的信息。事实证明, fist_name 字段仅接受字母!因此解决方案是将 test999 更改为没有数字的内容!