Django: tester un middleware qui dépend d'un autre middleware

Aperçu

Voici ce qu'il faut faire si vous souhaitez tester votre propre middleware mais que vous vous appuyez sur un autre middleware.

Quel genre de cas?

Généralement, lors du test du middleware, il semble qu'il soit majeur de créer une instance de middleware et d'appeler la méthode process_request. Voir: Unit Testing Django Middleware --Adam Donaghy --Medium

Cependant, la méthode ci-dessus ne peut pas être utilisée pour un middleware qui suppose que quelque chose est en cours dans un autre middleware. Par exemple, dans le cas d'un middleware qui traite les informations d'authentification, il est possible que l'attribut ʻusern'existe pas et qu'une exception se produise lors du référencement derequest.user` à moins qu'il ne passe par un middleware lié à la session.

Faire face

échantillon

Middleware

class SampleMiddleware(object):
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        #Faire diverses choses

        return self.get_response(request)

tester

def fake_init(self, _):
    def get_response(request):
        return HttpResponse()

    self.get_response = get_response


class SampleMiddlewareTest(TestCase):
    def setUp(self):
        self.mock_init = mock.patch.object(
            AuthMiddleware, "__init__", fake_init
        ).start()

        self.addCleanup(mock.patch.stopall)

    def test_Divers tests(self):
        #Demande
        self.client.get("/")

        #affirmer

référence

Recommended Posts

Django: tester un middleware qui dépend d'un autre middleware
Test Django
[Django] À propos des utilisateurs pouvant être utilisés sur un modèle
Test statistique niveau 2 qui passe presque uniquement sur Youtube
Ordre d'exécution de Django Middleware
Notes de céleri sur Django
Exécutez Django sur PythonAnywhere
Hello World avec Django