Django Rest Framework APITestCase请求tofrmat

时间:2017-12-02 01:34:01

标签: django testing django-rest-framework

尝试测试用@api_view修饰的api时,我会在手动测试时收到与响应不匹配的格式。我期待以下格式:

{
    "field": "string value"
}

但是当我尝试发布(从测试中)时,我收到错误,因为格式似乎是这个:

{
    "field": ["string_value"]
}

重现此问题:

class Tests(rest_framework.test.APITestCase):
    def test_api(self): 
         ...
         response = self.client.post(url, data)
         ...

2 个答案:

答案 0 :(得分:1)

您还可以使用以下方法在settings.py中设置默认格式:

REST_FRAMEWORK = {
    'TEST_REQUEST_DEFAULT_FORMAT': 'json',
    ...
}

...意味着您不必为每个请求进行设置。

答案 1 :(得分:0)

response = self.client.post(url, data, format='json')

请务必将其添加到您的代码中。 format='json'部分很重要,因为我假设您的端点设置为接收它。您的端点不够聪明,无法识别您发送的格式,但它会识别它是否采用您将其设置为的格式:)您可以通过添加{来覆盖它{1}}或parser_class=(JSONParser,))@parser_classes((JSONParser,)) / APIView

检查@apiview文件中的这一行。

settings.py

http://www.django-rest-framework.org/api-guide/parsers/