Django:单元测试表单和KeyError

时间:2012-12-10 01:19:14

标签: django forms unit-testing email

我正在使用新的自定义用户模型测试django 1.5b中的注册表单。我想测试我的自定义clean_email方法在新用户尝试使用已经存在的电子邮件注册时引发ValidationError,这是我写的干净方法:`

def clean_email(self):

    email = self.cleaned_data["email"]
    try:
        user = MyUser.objects.get(email=email)
        raise forms.ValidationError("This email address already exists.")
    except MyUser.DoesNotExist:
        return email

测试代码:

def test_clean_email(self):
    data = {'email': 'aaaa@gmail.com'}
    form = MyForm(data)
    actual   = form.errors['email']
    expected = [u'This email address already exists.']
    self.assertEqual(actual, expected)

我在运行测试后得到了这个:

actual   = form.errors['email']
KeyError: 'email'

1 个答案:

答案 0 :(得分:0)

您必须致电form.is_valid()才能填充form.errors