ils*_*005 2 python django unit-testing django-rest-framework
我正在为我的 api 视图编写单元测试。现在我面临的问题是我无法使用testclient提供的发布列表django-restframwork:
我的观点是这样的:
@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)
Run Code Online (Sandbox Code Playgroud)
我发布到此端点的 json 对象通常如下所示:
{"watchlist": [32, 12, 23], "sortedoutlist": [1, 2,3 ]}
Run Code Online (Sandbox Code Playgroud)
现在我为此视图设置了一个测试用例:
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)
Run Code Online (Sandbox Code Playgroud)
的问题是,watchlist与sortedoutlist在所述视图收到没有lists,但int含有SENT列表的最后的值(监视列表是23和sortedoutlist是3。
我在这里做错了什么?如何在测试用例中发布列表?
的默认格式Client.post是多部分。您需要json使用format参数指定:
r = self.client.post(url, data, format='json')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
348 次 |
| 最近记录: |