gpt4 book ai didi

python - 如何使用 django-rest 框架测试客户端发布列表

转载 作者:行者123 更新时间:2023-11-30 22:59:37 25 4
gpt4 key购买 nike

我正在为我的 api View 编写单元测试。现在我面临的问题是无法使用 django-restframwork 提供的 testclient 发布列表:

我的观点如下:

@detail_route(methods=['post'])
def dosomestuff(self, request, slug, *args, **kwargs):
watchlist = request.data.get('watchlist', [])
sortedoutlist = request.data.get('sortedoutlist', [])
# create some objects
...

return Response('success'), status=status.HTTP_201_CREATED)

我发布到此端点的 json 对象通常如下所示:

{"watchlist": [32, 12, 23], "sortedoutlist": [1, 2,3 ]}

现在我为此 View 设置了一个测试用例:

class MyTestCase(APITestCase):

def test_dosomestuff(self):
url = reverse('dosomestuff')
data = {'watchlist': [32, 12, 23],
'sortedoutlist': [1, 2,3 ]}
r = self.client.post(url, data)
self.assertEqual(r.status_code, status.HTTP_201_CREATED)

问题是 View 中收到的watchlistsortedoutlist不是lists,而是包含int发送列表的最后一个值(watchlist 为 23,sortedoutlist 为 3。

我在这里做错了什么?如何在测试用例中发布列表?

最佳答案

Client.post 的默认格式是多部分的。您需要使用 format parameter 指定 json :

r = self.client.post(url, data, format='json')

关于python - 如何使用 django-rest 框架测试客户端发布列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35670950/

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