2011-03-30 59 views
3

在views.py:使用cookie測試Django的web應用程序/會話

get_dict = Site.objects.getDictionary(request.COOKIES['siteid'])

{得到一個字典,根據ID從cookie的站點信息}
在tests.py:

from django.test import TestCase 
class WebAppTest(TestCase): 
    def test_status(self): 
     response = self.client.get('/main/',{}) 
     response.status_code # --->passed with code 200 
     response = self.client.get('/webpage/',{'blog':1}) 
     response.status_code # ----> this is failing 

爲了呈現博客頁面不言而喻視圖它使用現有的cookie,並處理得到一本字典,呈現模板,運行應用程序時,工作正常。但測試失敗。從來沒有測試Django的webapps我不知道如何測試它的權利。這是回溯。
回溯(最近通話最後一個):

File "<console>", line 2, in <module> 
    File "/usr/lib/pymodules/python2.6/django/test/client.py", line 313, in post 
    response = self.request(**r) 
    File "/usr/lib/pymodules/python2.6/django/core/handlers/base.py", line 92, in get_response 
    response = callback(request, *callback_args, **callback_kwargs) 
    File "/var/lib/django/data/../webpage/views.py", line 237, in getCostInfo 
    get_dict = Site.objects.getDictionary(request.COOKIES['siteid']) 
KeyError: 'siteid' 

經歷了一些網上的樣品,但無法找到的東西,在深度與餅乾/會話交易。任何想法或指引有用的鏈接,高度讚賞。

回答

6

看看在Django Testing docsPersistent State部分。

在你的情況,我希望你的測試,以更多的東西,如:

from django.test import TestCase 
from django.test.client import Client 
class WebAppTest(TestCase): 
    def setUp(self): 
     self.client = Client() 
     session = self.client.session 
     session['siteid'] = 69 ## Or any valid siteid. 
     session.save() 
    def test_status(self): 
     response = self.client.get('/main/',{}) 
     self.assertEqual(response.status_code, 200) 
     response = self.client.get('/webpage/',{'blog':1}) 
     self.assertEqual(response.status_code, 200) 
+4

啊session.save()給這個AttributeError的:「快譯通」對象有沒有屬性「保存」。評論說,部分沒有work.this應該是一個很好的start.Could請您賜教爲什麼它沒有工作時SITEID存儲在會話。謝謝傑克。 – stackover 2011-03-30 19:19:27

+0

因爲沒有'siteid'了會議。 – 2011-03-30 20:25:08

+0

我也有存儲用戶在選擇的request.session [「選擇」在我的意見。它再次抱怨,所以我嘗試在session.update({'choice':'technology'})測試中更新client.session。這不起作用。它給了我關鍵的錯誤「選擇」。任何想法?對不起,如果這是不適合發佈它的地方。 – stackover 2011-03-30 21:04:22