Nemôžem pristupovať k context
atribútu HttpResponse
objekt z ipython. Ale jednotka testuje prístup context
.
Tu je test jednotky. Testovací chod prebehol správne:
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")
Tu je kód, ktorý som použil v 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
nie je v škrupine, zatiaľ čo response.context
existuje v jednotkovom teste.
Prečo HttpResponse
správať sa nekonzistentne medzi testom shell a jednotkou?
odpovede:
7 pre odpoveď č. 1V testovacom kóde Django môžete vidieť, kde sa v špeciálnom prístrojovom vybavení nachádza aby šablóna renderovala odoslanie signálu, ktoré test klient počúva tak to môže anotujte objekt odpovede pomocou renderovaných šablón a ich kontextov.
Aby bol tento signál pripojený, musíte „dbuď zavolajte funkciu django.test.utils.setup_test_environment () vo vašej relácii shell (ktorá má iné vedľajšie účinky), alebo duplikujte len riadky, ktoré vykreslenie šablóny monkeypatch. Nie je to príliš ťažké, ale súhlasím s tým, že „d by bolo pekné, keby tento konkrétny aspekt ladenia mohol byť refactored von, aby bolo jednoduchšie používať mimo testov. Osobne by som nevadilo, keby tieto informácie boli vždy zhromažďované, keď DEBUG je pravda, nie len testované.