[PYTHON] Django: Testen Sie eine Middleware, die von einer anderen Middleware abhängt

Überblick

Folgendes können Sie tun, wenn Sie Ihre eigene Middleware testen möchten, sich aber auf eine andere Middleware verlassen möchten.

Was für ein Fall?

Im Allgemeinen scheint es beim Testen von Middleware wichtig zu sein, eine Instanz von Middleware zu erstellen und die Methode "process_request" aufzurufen. Siehe: Unit Testing Django Middleware - Adam Donaghy - Medium

Die obige Methode kann jedoch nicht für eine Middleware verwendet werden, die davon ausgeht, dass in einer anderen Middleware etwas ausgeführt wird. Im Fall von Middleware, die Authentifizierungsinformationen verarbeitet, ist es beispielsweise möglich, dass das Attribut "Benutzer" nicht vorhanden ist und beim Verweisen auf "request.user" eine Ausnahme auftritt, es sei denn, es wird sitzungsbezogene Middleware durchlaufen.

Bewältigung

Stichprobe

Middleware

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

    def __call__(self, request):
        #Mach verschiedene Dinge

        return self.get_response(request)

Prüfung

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_Verschiedene Tests(self):
        #Anfrage
        self.client.get("/")

        #behaupten

Referenz

Recommended Posts

Django: Testen Sie eine Middleware, die von einer anderen Middleware abhängt
Django-Test
[Django] Über Benutzer, die für Vorlagen verwendet werden können
Statistische Teststufe 2, die fast nur auf Youtube besteht
Ausführungsreihenfolge der Django Middleware
Sellerie-Notizen zu Django
Führen Sie Django auf PythonAnywhere aus
Hallo Welt mit Django