2016-02-27 5 views
1

Я пишу блок-тесты для своих просмотров api. Сейчас я столкнулся с проблемой, что я не могу размещать списки, используя testclient предоставленную django-restframwork:Как опубликовать список с django-restframework 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 ]} 

Теперь я создал TestCase для этой точки зрения:

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) 

Проблема заключается в том, что watchlist и sortedoutlist получили в представлении нет lists, но int содержащий последнее значение переданного списка (список наблюдения является 23 и sortedoutlist равно 3.

Что я здесь делаю неправильно? Как я могу публиковать списки в тестовом файле?

ответ

2

Формат по умолчанию для Client.post является множественным. Необходимо указать json с помощью format parameter:

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

Спасибо! Это помогло. – ilse2005

Смежные вопросы