如果在 Post 后重定向失败,则会显示有意义的错误消息(测试 Django)

Meaningful error message if Redirect after Post fails (Testing Django)

成功后 POST 应该发生重定向 (PRG Pattern)

    response = admin_client.post(url, data)
    assert response.status_code == 302

如果此测试失败,我会收到一条毫无意义的错误消息。

AssertionError assert 200 == 302

由于状态是 200,我知道我发送的表单数据没有通过验证。

有没有django-way把django表单验证的错误信息放到异常中?

示例:我希望看到类似“需要 foo”的内容(如果“foo”不在 data 中)

Django 的自定义 TestCase class 是 unittest.TestCase 的子 class 并且它的所有断言函数都有一个 msg 参数,传递时使用该参数作为断言失败时的错误消息。此外,由于您希望显示表单错误,因此您可以从上下文中获取表单实例并获取其错误。这样的事情应该有效:

assertEqual(response.status_code, 302, str(response.context['form'].errors))

Note 表单还有 form.errors.as_data(),它将显示在表单验证期间引发的异常,或者 form.errors.as_json() 您可能会发现其中的任何一个更有用。参考Form.errors