1. ホーム
  2. python

[解決済み] Django の Forms のテストはどのように書くべきですか?

2022-05-16 14:51:18

質問

テストを書いているときに、Django のビューへのリクエストをシミュレートしたいです。これは主にフォームをテストするためです。ここに簡単なテストリクエストのスニペットがあります。

from django.tests import TestCase

class MyTests(TestCase):
    def test_forms(self):
        response = self.client.post("/my/form/", {'something':'something'})
        self.assertEqual(response.status_code, 200) # we get our page back with an error

このページはフォームエラーがあろうとなかろうと常に200のレスポンスを返します。どうすれば、フォームが失敗し、特定のフィールド( soemthing )にエラーがあったことを確認するにはどうしたらよいでしょうか?

どのように解決しますか?

フォームをテストしたいだけなら、フォームをテストするだけで、フォームがレンダリングされるビューはテストしないほうがいいと思います。アイデアを得るための例。

from django.test import TestCase
from myapp.forms import MyForm

class MyTests(TestCase):
    def test_forms(self):
        form_data = {'something': 'something'}
        form = MyForm(data=form_data)
        self.assertTrue(form.is_valid())
        ... # other tests relating forms, for example checking the form data