问题描述
POST 成功后会发生重定向 (PRG Pattern)
response = admin_client.post(url,data)
assert response.status_code == 302
如果此测试失败,我会收到一条毫无意义的错误消息。
AssertionError assert 200 == 302
由于状态为 200
,我知道我发送的表单数据未通过验证。
是否有django方式将django表单验证的错误信息放入异常中?
示例:我希望看到类似“foo is required”的内容(如果“foo”不在 data
中)
解决方法
Django 的自定义 TestCase 类是 unittest.TestCase
的子类,并且它的所有断言函数都有一个 msg
参数,该参数在传递时用作断言失败时的错误消息。此外,由于您希望显示表单错误,您可以从上下文中获取表单实例并获取其错误。这样的事情应该可以工作:
assertEqual(response.status_code,302,str(response.context['form'].errors))
Note 表单还有 form.errors.as_data()
将显示表单验证期间引发的异常,或者 form.errors.as_json()
您可能会发现其中任何一个更有用。参考Form.errors