J'essaie de décider si je dois utiliser Client
ou RequestFactory
de Django pour tester mes vues.
Je crée mon serveur en utilisant DjangoRESTFramework et c'est vraiment simple, jusqu'à présent:
class SimpleModelList(generics.ListCreateAPIView):
"""
Retrieve list of all route_areas or create a new one.
"""
queryset = SimpleModel.objects.all()
serializer_class = SimpleModelSerializer
filter_backends = (IsOwnerFilterBackend,)
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
Quelles sont les différences entre les tests avec Client
et RequestFactory
de Django et quelle approche est la plus appropriée pour tester un serveur REST (s'il existe une différence en plus d'en aimer un) mieux)?
Dois-je créer des tests avec les deux afin de fournir une meilleure couverture pour mon système?
RequestFactory
et Client
ont des cas d'utilisation très différents. Pour le mettre en une seule phrase: RequestFactory
renvoie un request
, tandis que Client
renvoie un response
.
RequestFactory
fait ce qu'il dit - c'est une fabrique pour créer request
objets. Ni plus ni moins.
Client
est utilisé pour simuler un cycle complet de requête-réponse. Il créera un objet request
, qu'il passera ensuite à travers un gestionnaire WSGI. Ce gestionnaire résout l'URL, appelle le middleware approprié et exécute la vue. Il renvoie ensuite l'objet de réponse. Il présente l'avantage supplémentaire de rassembler de nombreuses données supplémentaires sur l'objet response
qui sont extrêmement utiles pour les tests.
RequestFactory
ne touche en fait aucun de votre code, mais l'objet request
peut être utilisé pour tester des parties de votre code qui nécessitent un request
valide. Le Client
exécute vos vues, donc pour tester vos vues, vous devez utiliser le Client
et inspecter la réponse. N'oubliez pas de vérifier la documentation sur le Client
.