Odpowiedź klienta testu jednostkowego Django ma pusty kontekst
Mam test jednostkowy, który zawodzi w twierdzeniu, które przechodzi w innym teście w tej samej klasie przypadków testowych.
Oto test pozytywny:
def test_home(self):
c = Client()
resp = c.get('/')
self.assertEqual(resp.status_code, 200)
self.assertTrue('a_formset' in resp.context)
Oto nieudany test:
def test_number_initial_number_of_forms(self):
c = Client()
resp = c.get('/')
self.assertEqual(resp.context['a_formset'].total_form_count(), 1)
W drugim teście dostaję błądTypeError: 'NoneType' object has no attribute '__getitem__'
.
Jeśli wykonam drugi test jako
def test_number_initial_number_of_forms(self):
c = Client()
resp = c.get('/')
self.assertTrue('a_formset' in resp.context)
self.assertEqual(resp.context['a_formset'].total_form_count(), 1)
Dostaję błądTypeError: argument of type 'NoneType' is not iterable
. Potwierdziłem za pomocą instrukcji print w drugim teście, że odpowiedź response.content zawiera stronę, którą oczekuję, że kod stanu jest poprawny i że szablon jest poprawny. Ale kontekst odpowiedzi jest konsekwentnyNone
w drugim teście.
Używam testów jednostkowych Django za pomocą standardowego interfejsu „python manage.py test ...”, więc nie wierzę, że trafię na „kontekst jest pusty z powłoki" kwestia.
Co się z tym dzieje?
Edytować:
Jeśli dodamprint type(resp.context['a_formset'])
do każdego testu, na otrzymany test roboczy<class 'django.forms.formsets.AFormFormSet'>
. Dla testu niepracującego dostajęTypeError: 'NoneType' object has no attribute '__getitem__'
jeszcze raz.