Django Rest框架Camel案例 - 测试不使用解析器

时间:2017-03-30 17:53:33

标签: django django-rest-framework

我使用rest_framework在Django中有一个简单的REST API。我添加了djangorestframework-camel-case插件并更新了我的REST_FRAMEWORK配置和REST API输出正确的camelCase。但是,当我使用unittest(python manage.py test app.test)进行测试时,结果是使用snake_case而不是camelCase,导致我的断言失败。

使用此分支:https://github.com/rense/djangorestframework-camel-case

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.DjangoModelPermissions',
    ),
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.TokenAuthentication',
    ),
    'DEFAULT_FILTER_BACKENDS': ('rest_framework.filters.DjangoFilterBackend', 'rest_framework.filters.OrderingFilter'),
    'DEFAULT_RENDERER_CLASSES': ('djangorestframework_camel_case.render.CamelCaseJSONRenderer',),
    'DEFAULT_PARSER_CLASSES': ('djangorestframework_camel_case.parser.CamelCaseJSONParser',),
    'TEST_REQUEST_RENDERER_CLASSES': ('djangorestframework_camel_case.render.CamelCaseJSONRenderer',),
    'TEST_REQUEST_PARSER_CLASSES': ('djangorestframework_camel_case.parser.CamelCaseJSONParser',),
    'TEST_REQUEST_DEFAULT_FORMAT': 'json',
}

我是否需要添加一些其他配置?这是djangorestframework中的错误吗?在djangorestframework-camel-case?

2 个答案:

答案 0 :(得分:2)

问题可能出在您的测试文件中。

让我们说你在测试中有以下几点:

client = APIClient() response = client.get('some_url', format='json')

响应对象将具有data参数,该参数将为snake_case,而content将为camelCase。

response.data # will contain snake_case keys json.loads(response.content) # will contain camelCase keys

确保您针对正确的响应参数运行断言。

答案 1 :(得分:1)

我刚刚了解到您也可以全局设置,这可能是您想要的:

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

根据文档:https://www.django-rest-framework.org/api-guide/testing/#configuration