Как отправить данные вместе с `client.patch ()`, используя APITestCase в DjangoRestFramework? - PullRequest
0 голосов
/ 30 января 2020

Мой TestCase:

class MyApiTests(APITestCase):
    def test_retrieve(self):
        resp = self.client.patch('/my/endpoint/', data={
            'name': 'new name',
            'age': 25,
            'some_array': [{
                'my_subobject_name': 'foo'
            }]
        }

В моем наборе, если я беру data['some_array'], я получаю:

u"{'my_subobject_name': 'foo'}".

Почему это строка вместо массива с одним словарем?

Если я отправлю строковую версию

{
    'name': 'new name',
    'age': 25,
    'some_array': [{
        'my_subobject_name': 'foo'
    }]
}

через мой браузер, DRF будет работать нормально, и some_array будет a массив с одним словарем внутри него, как и ожидалось.

Как правильно отправить сложную структуру данных вместе с patch() в модульном тесте APITestCase?

1 Ответ

2 голосов
/ 30 января 2020

Попробуйте добавить аргумент format='json' в вызов функции исправления, т.е.

class MyApiTests(APITestCase):
    def test_retrieve(self):
        resp = self.client.patch('/my/endpoint/', data={
            'name': 'new name',
            'age': 25,
            'some_array': [{
                'my_subobject_name': 'foo'
            }]
        }, format='json')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...