我正努力想出這個問題,會話正常運行時,我正常運行我的應用程序,但我無法弄清楚如何在測試用例中設置會話中的數據。如何在django測試用例中設置cookie?
文檔在測試用例中說,您必須保存會話以在提出請求之前應用更改。 https://docs.djangoproject.com/en/1.2/topics/testing/#persistent-state
例如
from django.test import TestCase
class TestLogin(TestCase):
def test_processuser(self):
redirect = '/processuser/'
session = self.client.session
session["id"] = '1234'
session.save()
response = self.client.get(redirect)
但self.client.session返回的session對象只是一個普通的python字典嗎?
Diging到代碼中調用Client.session是這樣的:
def _session(self):
"""
Obtains the current session variables.
"""
if 'django.contrib.sessions' in settings.INSTALLED_APPS:
engine = import_module(settings.SESSION_ENGINE)
cookie = self.cookies.get(settings.SESSION_COOKIE_NAME, None)
if cookie:
return engine.SessionStore(cookie.value)
return {}
session = property(_session)
cookie = self.cookies.get(settings.SESSION_COOKIE_NAME, None)
回報None
所以它只是在一個會話存儲代替返回的字典。
看起來我必須在測試客戶端做一些準備工作才能保存會話?沒有真正有這方面的經驗,任何幫助,將不勝感激。
Django的1.2.5 的Python 2.6.5
乾杯,
阿西姆。
由於該訣竅.. 。 – jawache 2011-05-30 18:49:03