Ich habe eine Funktion, die ich von einem Unittest anrufe. Vom Setzen einiger Debug-Traces weiß ich, dass die Funktion wie ein Charm funktioniert und alle Werte korrekt für die Rückgabe vorbereitet sind.Kann ich auf den Antwortkontext einer Ansicht zugreifen, die ohne den Testclient getestet wurde?
Dies ist, was mein Testcode aussieht (siehe wo mein ipdb.set_trace() ist):
@override_settings(REGISTRATION_OPEN=True)
def test_confirm_account(self):
""" view that let's a user confirm account creation and username
when loggin in with social_auth """
request = self.factory.get('')
request.user = AnonymousUser()
request.session={}
request.session.update({self.pipename:{'backend':'facebook',
'kwargs':{'username':'Chuck Norris','response':{'id':1}}}})
# this is the function of which i need the context:
response = confirm_account(request)
self.assertEqual(response.context['keytotest'],'valuetotest')
Von dem, was ich weiß, von this part of the Django docs, i response.context zuzugreifen Lage wäre, wenn ich verwendet habe der Test-Client. Aber wenn ich versuche, response.context zuzugreifen, wie ich es tat, ich diese:
AttributeError: 'HttpResponse' object has no attribute 'context'
Gibt es eine Möglichkeit, das besondere Httpresponse-Objekt des Kunden zu erhalten, ohne den Client zu verwenden?
Der Aufruf über den Test-Client gibt mir keine volle Kontrolle über die Konstruktion der Anfrage. Ich fragte ausdrücklich, ob es ohne den Kunden möglich ist. – marue
Ich manipuliere Sitzung mit dem eingebauten Client in meinen Tests (siehe client.session). Ist das, was Sie nennen, Baukontrolle anfordern? Wenn ja, überdenken Sie Ihren Downvote. – starenka
Nein, ist es nicht. Bei einer Sitzung handelt es sich um Informationen zu einem bestimmten Benutzer, die auf der Serverseite gespeichert sind. Die Anforderung besteht darin, was ein Client an den Server sendet, um eine Serverantwort anzufordern. Der Antwortkontext (den ich verlangte) wird nur zum Testen verwendet und enthält Informationen darüber, wie der Server die Antwort erstellt hat (dh welche Vorlagen verwendet wurden). Es ist nicht derselbe wie der Anfragekontext und nicht derselbe wie die Sitzung. – marue