Django Rest Framework Camel Case - 不使用解析器进行测试

Den*_*din 5 django django-rest-framework

我在 Django 中使用 rest_framework 有一个简单的 REST API。我添加了 djangorestframework-camel-case 插件并更新了我的 REST_FRAMEWORK 配置和 REST API 输出正确的驼峰案例。但是,当我使用 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',
}
Run Code Online (Sandbox Code Playgroud)

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

ale*_*gui 5

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

假设您的测试中有以下内容:

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

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