django测试非现场验证错误

测试非字段特定验证错误的
django方法是什么?

例如,电子邮件字段将测试输入的文本是否为有效的电子邮件地址,但是非字段错误将显示在表单上方,与任何一个字段无关.例如,它会说该电子邮件地址已经注册.

在测试应用程序时,如何测试这些非字段验证错误?

编辑:使问题更清楚.我有一个自定义验证函数,但我想测试它是否抛出了应该使用Django提供的unittest框架的错误.

我可以直接调用函数并以这种方式测试它,但这并不能确保它在视图中正确使用(即:我想进行集成测试).

谢谢.

编辑:我找到了解决方案,如何测试和不验证字段错误.

它是用assertFormError完成的.将字段名称更改为“无”,并将错误字符串更改为错误字符串列表.

self.assertFormError(response, 'form', 'field name', 'error') # Test single field error
self.assertFormError(response, 'form', None, ['Error #1.', 'Error #2']) # Test general form errors

最佳答案 只是为了得到一个正确的答案,即使它已经在问题本身,我会发布答案.

您可以使用assertFormError()测试表单是否存在错误.

Asserts that a field on a form raises the provided list of errors when rendered on the form.

请注意,表单名称必须是上下文中表单的名称,而不是您用于验证的实际表单.

对于non_field_errors(与任何字段无关的一般错误),您可以按如下方式使用它:

self.assertFormError(response, 'form', None, 'Some error')

您可以按如下方式测试特定的字段错误:

self.assertFormError(response, 'form', 'field_name', 'Some error')

您还可以传入一组错误来测试.

errors = ['some error 1', 'some error 2']
self.assertFormError(response, 'form', 'field_name', errors)
点赞