我使用django-allauth == 0.32.0进行用户身份验证,当我手动执行此操作时(注册/登录/注销/等)。
我的models.py:
class Profile(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
user = models.OneToOneField(User, on_delete=models.CASCADE)
signals.py:
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
我的views.py:
@login_required(login_url='/accounts/login/')
def CategoryView(request):
context = {
'data': 'data',
}
return render(request, 'myapp/index.html',context)
现在,我正在尝试使用Selenium StaticLiveServerTestCase编写测试:
def test_login(self):
uname = "Herbert"
pw = "klaus1234"
User.objects.create(username=uname,password=pw)
login_page = "/accounts/login"
self.selenium.get('%s%s' % (self.live_server_url, login_page))
self.selenium.maximize_window()
self.selenium.find_element_by_id("id_login").send_keys(uname)
self.selenium.find_element_by_id("id_password").send_keys(pw)
self.selenium.find_elements_by_tag_name("button")[0].click()
当我运行它时,看起来我将正确的数据发布到输入字段中,确切地说,当我手动执行时它是如何处理的。但我得到的是:
“您指定的用户名和/或密码不正确。”
页面不会重定向到LOGIN_REDIRECT_URL
要验证我发布的数据是否正确,我添加了这些不会引发错误的行:
self.assertEqual(1,len(Profile.objects.all()))
self.assertEqual(uname,Profile.objects.all()[0].user.username)
self.assertEqual(pw,Profile.objects.all()[0].user.password)
self.assertEqual(uname,User.objects.all()[0].username)
self.assertEqual(pw,User.objects.all()[0].password)
我在这里缺少什么?
答案 0 :(得分:1)
这是相当古老的帖子,但我认为这里的问题是如何完成用户创建。
目前,您正在使用以下方式创建用户。
User.objects.create(username=uname,password=pw)
对于任何其他对象,这将是一个很好的选择,但应该创建用户如下:
User.objects.create_user(username=uname,password=pw)
这就是为什么您看到密码未加密(纯文本)的原因。