Нямам достъп до context
атрибут на HttpResponse
обект от ipython. Но тестът за единица има достъп 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")
Ето кода, който използвах в обвивката:
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
не е в черупката, докато има response.context
съществува в теста за единица.
Защо HttpResponse
да се държат несъгласувано между черупката и теста на единицата?
Отговори:
7 за отговор № 1Можете да видите в кода на теста Django, където той пише в специални уреди да накарате шаблона да изпрати сигнал, която тест клиент слуша така че може да отбележат обекта на отговора с рендерираните шаблони и техните контексти.
За да бъде приложен този сигнал, трябва да го направитеили извикайте функцията django.test.utils.setup_test_environment () в сесията си на черупки (която има други странични ефекти), или дублирайте само линиите, които преобразуват шаблона на monkeypatch. Не е твърде трудно, но съм съгласен, че ще бъде хубаво, ако този конкретен аспект на отстраняване на грешки може да бъде преработен, за да е по-лесно да се използва извън тестовете. Лично аз не бих имал нищо против, ако тази информация беше винаги събрана, когато DEBUG е истина, под тест.