测试非字段特定验证错误的
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)