我使用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?
答案 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