gpt4 book ai didi

django - GET Body 未与 APIClient Django DRF 一起发送

转载 作者:行者123 更新时间:2023-12-04 02:39:46 26 4
gpt4 key购买 nike

我想在 django drf 测试用例中使用 get 请求发送正文数据 APITestCase
例如

data ={'hi':'bye'}
self.client.get('media_list/', {'body': data})

在 View 中,我可以使用以下代码获取主体
request.data.get('hi', None)

但它不能使用 {'body': data}我的测试方法,但它在 postman 中工作正常原始类型。

尝试的是(不工作)
self.client.get('media_list/', data=data)

最佳答案

我在编写单元测试时遇到了这个问题。您可以使用此解决方法解决它。
问题 :当您使用 client.get 方法请求时,该方法会将您的数据放入 url。你可以在下面看到链接。
https://github.com/encode/django-rest-framework/blob/master/rest_framework/test.py#L194
解决方案 : 你应该使用 client.generic()直接地。不要使用 client.get() https://github.com/encode/django-rest-framework/blob/master/rest_framework/test.py#L203
例子

import json
from rest_framework.test import APIClient
from rest_framework.test import APITestCase


class TestClass(APITestCase):
def setUp(self):
# Setup run before every test method.
pass

def test_send_json_in_body(self):
data ={'hi' : 'bye'}
resp = self.client.generic(method="GET", path="/return/data/", data=json.dumps(data), content_type='application/json')

request._request
<WSGIRequest: GET '/return/data/'>
request.data
{'hi': 'bye'}
有用 :)

关于django - GET Body 未与 APIClient Django DRF 一起发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59919695/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com