Wie benutze ich Session in TestCase in Django?

7

Ich möchte einige Sitzungsvariablen aus einem Test (Django TestCase)

lesen

Wie geht das sauber vor?

%Vor%     
nicolas 21.09.2011, 15:06
quelle

4 Antworten

12

Leider ist das nicht so einfach, wie Sie es sich gerade wünschen. Wie Sie vielleicht bemerkt haben, funktioniert die direkte Verwendung von self.client.session nicht, wenn Sie keine anderen Ansichten aufgerufen haben, die die Sitzungen mit geeigneten Sitzungscookies für Sie eingerichtet haben. Der Sitzungsspeicher / Cookie muss dann manuell oder über andere Ansichten eingerichtet werden.

Es gibt ein offenes Ticket, das das Testen von Sitzungen mit dem Testclient erleichtert: Ссылка

Zusätzlich zur Problemumgehung im Ticket gibt es einen Trick, der verwendet werden kann, wenn Sie django.contrib.auth verwenden. Die Methode login() des Testclients richtet einen Sitzungsspeicher / Cookie ein, der später im Test verwendet werden kann.

Wenn Sie andere Ansichten haben, die Sitzungen festlegen, wird auch das Anfordern von ihnen funktionieren (Sie haben wahrscheinlich eine andere Ansicht, die Sitzungen festlegt, andernfalls ist Ihre Ansicht, die die Sitzungen liest, ziemlich unbrauchbar.)

%Vor%     
andreaspelme 21.09.2011, 16:41
quelle
8

Ab Django 1.7+ ist das viel einfacher. Stellen Sie sicher, dass Sie die Sitzung als Variable festlegen, anstatt direkt darauf zu verweisen.

%Vor%

andreaspelmes Workaround wird nur in älteren Versionen von django benötigt. Siehe Dokumente

    
Bufke 18.05.2016 18:24
quelle
0

Sie sollten in der Lage sein, auf eine Client s Sitzungsvariable über ihre session -Eigenschaft zuzugreifen, also denke ich, dass self.client.session['documents_to_share_ids'] = [1] das sein sollte, wonach Sie suchen!

    
Bernhard Vallant 21.09.2011 16:28
quelle
0

Wenn Sie eine Sitzung für die Anforderung in Tests initialisieren müssen, um sie direkt zu bearbeiten:

%Vor%     
mennanov 21.08.2017 21:43
quelle

Tags und Links