【发布时间】:2010-12-28 07:26:48
【问题描述】:
我无法从 ipython 访问 HttpResponse 对象的 context 属性。但是单元测试访问的是context。
这里是单元测试。测试运行正常通过:
from django.test import Client, TestCase
from django.core import mail
class ClientTest(TestCase):
def test_get_view(self):
data = {'var': u'\xf2'}
response = self.client.get('/test04/', data)
# Check some response details
self.assertContains(response, 'This is a test')
self.assertEqual(response.context['var'], u'\xf2')
这是我在 shell 中使用的代码:
In [10]: from django.test import Client
In [11]: c = Client()
In [12]: r = c.get('/test04/', data)
In [13]: r.context
In [14]: type(r.context)
Out[14]: <type 'NoneType'>
response.context 在 shell 中没有,而response.context 存在于单元测试中。
为什么HttpResponse 在 shell 和单元测试之间的行为不一致?
【问题讨论】:
-
我自己试过了,在 Django shell 中既没有设置上下文也没有设置模板。我猜 Client 不打算在交互式 shell 中使用。测试运行器在运行测试之前会进行一些检测,这些检测不会通过 shell 触发。见
django.test.testcases
标签: django unit-testing testing