Voici ce qu'il faut faire si vous souhaitez tester votre propre middleware mais que vous vous appuyez sur un autre middleware.
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 de
request.user` à moins qu'il ne passe par un middleware lié à la session.
self.client.get ()
(similaire au test de View)get_response ()
où Middleware appelle la couche inférieure avec le Mock appropriéget_response ()
de l'instance de classe est injecté avec __init__
, il est nécessaire de remplacer __init__
par une méthode appropriée.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)
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
__init__
in Python - George Shuklin - Medium__init__
Recommended Posts