amu*_*sch 6 python django unit-testing
我正在测试我的表单会引发验证错误.
我的测试如下所示:
def test_register_password_strength(self):
form_params = {'first_name': 'John',
'last_name': 'Doe',
'email': 'john@doe.com',
'password': 'a',
'password_confirm': 'a',
'g-recaptcha-response': 'PASSED'}
form = RegisterForm(form_params)
self.assertFalse(form.is_valid())
try:
form.clean_password()
self.fail('Validation Error should be raised')
except ValidationError as e:
self.assertEquals('pw_too_short', e.code)
Run Code Online (Sandbox Code Playgroud)
表格ValidationError
以下列方式提出:
password = forms.CharField(label='Password', widget=forms.PasswordInput)
widgets = {
'password': forms.PasswordInput(),
}
def clean_password(self):
password = self.cleaned_data.get('password')
if len(password) < 7:
raise ValidationError('Password must be at least 7 characters long.', code='pw_too_short')
return self.cleaned_data.get('password')
Run Code Online (Sandbox Code Playgroud)
self.assertFalse(form.is_valid())
断言正确为false,但是当我尝试调用时form.clean_password()
,我收到以下错误:TypeError: object of type 'NoneType' has no len()
.
self.cleaned_data
没有命名元素password
之后form.is_valid()
被调用.
有没有其他方法来测试ValidationErrors
除了调用之外的其他方法is_valid()
?
而不是使用:
try:
form.clean_password()
self.fail('Validation Error should be raised')
except ValidationError as e:
self.assertEquals('pw_too_short', e.code)
Run Code Online (Sandbox Code Playgroud)
考虑使用 Form.has_error('password', code='pw_too_short')
更多信息:https://docs.djangoproject.com/en/1.8/ref/forms/api/#django.forms.Form.has_error
归档时间: |
|
查看次数: |
1367 次 |
最近记录: |