我正在开始TDD创意的新项目,所以首先我写了测试。但我对utf(我认为)有一个问题
我有简单的登录表单
from django.utils.translation import ugettext_lazy as _
ERRORS_MESSAGES = {
'not_active': _(u"Użytkownik nie jest aktywny"),
'user_not_exist': _(u"Użytkownik o podanym loginie już istnieje")
}
class LoginForm(forms.Form):
username = forms.CharField(max_length=50)
password = forms.CharField(max_length=50, widget=forms.PasswordInput)
def clean(self):
username = self.cleaned_data.get('username')
password = self.cleaned_data.get('password')
user = authenticate(username=username, password=password)
if not user:
raise forms.ValidationError(ERRORS_MESSAGES['user_not_exist'])
if not user.is_active:
raise forms.ValidationError(ERRORS_MESSAGES['not_active'])
return self.cleaned_data
在测试中:
user = User.objects.create(
username='asd', password='asd', email='asd@ad.asd'
)
form = LoginForm(data={'username': 'asd', 'password': 'asd'})
self.assertEqual(form.is_valid(), False)
print "ERRORS:", form.errors['__all__']
self.assertIn(ERRORS_MESSAGES['not_active'], form.errors)
和控制台输出:
# here, char 'ż' looks fine,
ERRORS: <ul class="errorlist nonfield"><li>Użytkownik o podanym loginie już istnieje</li></ul>
# but next:
self.assertIn(ERRORS_MESSAGES['not_active'], form.errors)
AssertionError:在{' all '中找不到:[u'U \ u017cytkownik o podanym loginie ju \ u017c istnieje']}
答案 0 :(得分:0)
你放了
#-*- encoding: utf-8 -*-
在文件的第一行?
编辑: 根据消息,我可以假设已经有 asd 名称的用户。