/ / Django Rest Framework Camel Case - Les tests n'utilisant pas d'analyseur syntaxique - django, django-rest-framework

Django Rest Framework Camel Case - Tester sans utiliser l'analyseur - django, django-rest-framework

J'ai une simple API REST dans Django en utilisantrest_framework. J'ai ajouté le plug-in djangorestframework-camel-case et mis à jour ma configuration REST_FRAMEWORK. L'API REST affiche correctement camelCase. Cependant, lorsque je teste avec unittest (python manage.py test app.test), les résultats sont dans snake_case au lieu de camelCase et font échouer mes assertions.

En utilisant cette fourchette: 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",
}

Dois-je ajouter une configuration supplémentaire? Est-ce un bug dans djangorestframework? Dans djangorestframework-camel-case?

Réponses:

1 pour la réponse № 1

Le problème peut être dans votre fichier de test.

Disons que vous avez dans vos tests quelque chose parmi les lignes de:

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

L'objet de réponse aura un data paramètre qui sera snake_case, et un content qui sera camelCase.

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

Assurez-vous que vos assertions sont exécutées avec le bon paramètre de réponse.