同じテストケースクラス内の別のテストに合格するアサーションで失敗したユニットテストがあります。ここでDjangoユニットテストクライアントの応答に空のコンテキストがあります
が通過テストです:
def test_home(self):
c = Client()
resp = c.get('/')
self.assertEqual(resp.status_code, 200)
self.assertTrue('a_formset' in resp.context)
ここで失敗するテストです:第二の試験で
def test_number_initial_number_of_forms(self):
c = Client()
resp = c.get('/')
self.assertEqual(resp.context['a_formset'].total_form_count(), 1)
は、私はエラーTypeError: 'NoneType' object has no attribute '__getitem__'
を取得します。
私は
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)
ように、第2のテストを実行すると、私はエラーTypeError: argument of type 'NoneType' is not iterable
を取得します。私は、response.contentには期待しているページが含まれていること、ステータスコードが正しいこと、そしてテンプレートが正しいことを、2番目のテストでprintステートメントによって確認しました。しかし、第2のテストでは、応答の文脈は一貫してNone
です。
標準の "python manage.py test ..."インターフェイスでDjangoユニットテストを実行しているので、 "context is empty from the shell"という問題が発生しているとは思われません。
これは何が起こっているのですか?
編集:
私は<class 'django.forms.formsets.AFormFormSet'>
を得る作業をテストするために、各テストにprint type(resp.context['a_formset'])
を追加した場合。不合格のテストのために、私はTypeError: 'NoneType' object has no attribute '__getitem__'
をもう一度得る。
'a_form'はフォームセットですか? – sneawo
@sneawoええ、それはformsetです。 –
作業テストと非作業テストの両方で、一時的に 'print type(resp.context ['a_formset'])'行を追加してください。あなたはあなたが期待しているものを得ていないかもしれません。 –