Mam funkcję, którą wywołuję z unittest. Od ustawienia niektórych ścieżek debugowania wiem, że funkcja działała jak czar i ma wszystkie wartości poprawnie przygotowane do powrotu.Czy mogę uzyskać dostęp do kontekstu odpowiedzi w widoku testowanym bez klienta testowego?
To właśnie moja testcode wygląda (patrz gdzie mój ipdb.set_trace() jest):
@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')
z tego co wiem od this part of the Django docs, chciałbym być w stanie uzyskać dostęp response.context gdy użyłem klient testujący. Ale gdy próbuję dostęp response.context jak zrobiłem to, ja się tak:
AttributeError: 'HttpResponse' object has no attribute 'context'
Czy istnieje sposób, aby uzyskać specjalny obiekt HttpResponse klienta, bez użycia klienta?
Wywołanie go za pośrednictwem klienta testowego nie daje mi pełnej kontroli nad procesem tworzenia żądania. Zdecydowanie zapytałem, czy jest to możliwe bez klienta. – marue
W moich testach manipuluję sesją za pomocą wbudowanego klienta (patrz client.session). Czy to właśnie nazywacie kontrolowaniem konturu? Jeśli tak, rozważ ponownie swoje zdanie. – starenka
Nie, nie jest. Sesja to informacja o pewnym użytkowniku przechowywanym na serwerze, żądanie jest tym, co klient wysyła do serwera w celu zażądania odpowiedzi serwera. Kontekst odpowiedzi (o który pytałem) jest używany tylko do testowania i zawiera informacje o tym, w jaki sposób serwer utworzył odpowiedź (tj. Które szablony zostały użyte). To nie jest to samo, co kontekst żądania, a nie to samo, co sesja. – marue