如何在Django单元测试中传递请求对象中的表单对象?

时间:2013-03-02 05:59:23

标签: django

假设我有一个测试视图的单元测试。该视图需要表单进行一些处理。我的单元测试看起来像这样:

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函数中传递表单对象?

感谢。

1 个答案:

答案 0 :(得分:2)

您实际上没有在帖子中传递表单对象,您传递表单数据就像提交表单一样(这是您正在模拟的)

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())