2011-03-30 5 views
3

:테스트 장고 웹 응용 프로그램/세션

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

는 {쿠키에서 ID를 기반으로 사이트 정보 사전을 가져옵니다} 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 

블로그 페이지를 표시하기 위해 기존 쿠키를 사용하여 사전을 가져와 처리하고, 템플릿을 렌더링하며, 앱을 실행할 때 잘 작동합니다. 하지만 테스트가 실패했습니다. Django 웹 애플리케이션을 테스트 한 적이 없지만 올바르게 테스트하는 방법을 모르겠습니다. 여기에 추적이있다.
역 추적 (마지막으로 가장 최근에 호출) :

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 섹션을 살펴보십시오. 'DICT'객체 '저장'에는 속성이 없습니다 : (가)이 AttributeError를 준

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 : 귀하의 경우

, 나는 테스트 뭔가 더처럼 기대. 그 부분에 대해 논평하는 것은 일을 시작했습니다. 이것은 좋은 시작일 것입니다. 세션 ID가 세션에 저장되었을 때 왜 작동했는지 제게 알려주십시오. 고마워. – stackover

+0

세션에 'siteid'가 없으므로. –

+0

또한 내 의견에는 request.session [ 'choice']에 사용자 선택 항목이 저장되어 있습니다. 그 불평을 다시, 그래서 session.update ({ '선택': '기술'}) 같은 테스트에서 client.session 업데이트하려고했습니다. 이게 효과가 없어. 중요한 오류 '선택'이 생겨. 좋은 생각이야? 죄송합니다. 게시 할 곳이 아닌 경우. – stackover

관련 문제