在views.py中:


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


{根据Cookie的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


为了呈现博客页面,它进入一个视图,在该视图中它使用现有的cookie获取字典,对其进行处理,呈现模板,这在运行该应用程序时可以正常工作。但是测试失败了,因为从未测试过Django Webapp,所以我不确定如何正确测试它。这是回溯。
追溯(最近一次通话):

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'


浏览了一些在线示例,但找不到与Cookie /会话有关的详细信息。任何想法或指向有用链接的方法都将受到高度赞赏。

最佳答案

看一下Persistent StateDjango Testing docs部分。

就您而言,我希望您的测试更像是:

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)

09-30 15:23
查看更多