我在 Django Rest Framework 端点上编写了几个单元测试,没有任何问题,直到我尝试在 POST 请求中传递嵌套对象:
class BookTestCase(APIVersion, APITestCase):
def setUp(self):
self.url = self.reverse_with_get_params('book')
self.user = CustomerFactory.create().user
self.base_data = {"foo": "bar",
"credit_card": {"card_number": "1234567812345678",
"expiration_date": "1116",
"security_code": "359"},
"foo2": "bar2"}
def test_book(self):
add_token_to_user(self.user, self.client)
response = self.client.post(self.url, self.base_data)
self.assertEqual(response.status_code, 200)
然后,一开始就用
pdb.set_trace()
运行相关的 web 服务,这里是 request.DATA
的内容:<QueryDict: {u'foo': [u'bar'],
u'credit_card': [u'expiration_date', u'security_code', u'card_number'],
u'foo2': [u'bar2']}>
如您所见,每个 level1 对象都被正确填充,但信用卡内容已消失。
任何想法?谢谢!
注意:Django 1.6/Rest Framework 2
最佳答案
您必须更改为您的电话后格式。试试 format='json'
response = self.client.post(self.url, self.base_data, format='json')
关于django - 在 Django Rest Framework 和单元测试中使用嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36126991/