如何在 DjangoRestFramework 中将数据与 APITestCase client.patch() 一起发送?

How do I send data along with APITestCase client.patch() in DjangoRestFramework?

我的测试用例:

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 将是一个包含一个字典的数组,正如预期的那样。

在 APITestCase 单元测试中发送复杂数据结构和 patch() 的正确方法是什么?

尝试在补丁函数调用中添加 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')