単体テストで投稿しているフォームを含む Django ビューがあります。テストの一般的な構造は次のとおりです。
class ViewTests(TestCase):
form_url = reverse_lazy('myapp:form')
success_url = reverse_lazy('myapp:success')
def test_form_submission_with_valid_data_creates_new_object_and_redirects(self):
attributes = EntryFactory.attributes()
attributes['product'] = ProductFactory() # Entry has a ForeignKey to Product
response = self.client.post(self.form_url, attributes, follow=True)
self.assertEqual(response.status_code, 200)
self.assertRedirects(response, self.success_url)
self.assertTemplateUsed(response, 'myapp/success.html')
ただし、リダイレクトが期待どおりに機能しない理由がわかりません。import pdb; pdb.set_trace()
フォーム エラー ( ) があるかどうかを確認するためにドロップしようとしましたresponse.context['form'].errors
が、返されるのは空の dict だけです。ブラウザでフォームを送信すると適切にリダイレクトされるため、単体テストが失敗する理由がわかりません。また、フォーム エラー dict にエラーが表示されないため、適切にデバッグする方法もわかりません。