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)

有人可以告诉我如何在 post 函数中传递表单对象吗?

谢谢。

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 回答