【问题标题】:Pass query params but got error that query params is required传递查询参数,但出现需要查询参数的错误
【发布时间】:2021-08-05 18:51:16
【问题描述】:

我为我的 django 应用程序编写了一些单元测试。但测试失败,因为查询参数丢失但我通过了查询参数。

这是我的测试之一:

    def test_delete_card(self):  
        url = reverse("postideas-urls:DeleteCard")
        card_pk=self.test_card_second.id
        data3 = {
                'card_pk':card_pk
                }
        self.client.credentials(HTTP_AUTHORIZATION='Bearer ' + self.token)
        response = self.client.delete(url,params=data3)
        print(response.__dict__)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

这是我的response.__dict___

... '_container': [b'{"error":"card_pk query param(s) are required"}'], '_is_rendered': True, 'data': {'error': 'card_pk query param(s) are required'}, 'exception': False, 'content_type': None, 'accepted_renderer': <rest_framework.renderers.JSONRenderer object at 0x7fb757f3aad0>, 'accepted_media_type': 'application/json', 'renderer_context': {'view': <postideas.views.DeleteCardView object at 0x7fb757f37d10>, 'args': (), 'kwargs': {}, 'request': <rest_framework.request.Request: DELETE '/api/v1/postideas/Delete_Card/'>, 'response': <Response status_code=400, ...'request': {'PATH_INFO': '/api/v1/postideas/Delete_Card/', 'REQUEST_METHOD': 'DELETE', 'SERVER_PORT': '80', 'wsgi.url_scheme': 'http', 'params': {'card_pk': 5}, 'QUERY_STRING': '', 'HTTP_AUTHORIZATION': 'Bearer ...

       

【问题讨论】:

    标签: python django unit-testing django-rest-framework


    【解决方案1】:

    您将数据作为params=data3 传递,但它应该是第二个位置参数或关键字参数data。因此,您可以这样提出请求:

    response = self.client.delete(url, data3)
    

    response = self.client.delete(url, data=data3)
    

    注意:另外,如果您使用 DRF 的通用视图,则 成功的删除请求是 204,因此断言可能需要 改为:

    self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
    

    【讨论】:

    • 因为我不想将它们作为一个主体传递。我需要它们作为我的 GET 请求或 PUT 请求的查询参数。
    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    • 2016-10-23
    • 2019-12-10
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    相关资源
    最近更新 更多