/ / Django: Тестът на клиентския тест е празен от черупката - django, тестване на единица, тестване

Джанго: Контекстът на клиентския тест е празен от черупката - django, тестване на единица, тестване

Нямам достъп до 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 е истина, под тест.