2

ビューをテストする単体テストがあるとします。そのビューには、何らかの処理を行うためのフォームが必要です。私の単体テストは次のようになります。

class ViewTests(TestCase):
def setUp(self):
    self.factory = RequestFactory()

def test_login_view_post(self):
    # require form object to pass it in post function
    response = self.client.post(reverse('login'))
    self.assertContains(response, "Your username and password didn't match", status_code=200)

ポスト関数でフォームオブジェクトを渡すにはどうすればよいか教えてもらえますか?

ありがとう。

4

1 に答える 1

3

投稿で実際にフォームオブジェクトを渡すのではなく、フォームが送信されているかのようにフォームデータを渡します(これがシミュレートしているものです)

post_data = {
    "username": "foo",
    "password": "bar"
}
response = self.client.post(reverse('login'), data=post_data)

または、単純にフォームを別のテストに含め、データでインスタンス化してその有効性をテストすることもできます。

def test_form(self):
    data = {
        "username": "foo",
        "password": "bar"
    }
    form = LoginForm(data)
    self.assertFalse(form.is_valid())
于 2013-03-02T06:31:24.463 に答える