登录selenium测试django all auth失败

时间:2017-05-28 03:58:00

标签: python django selenium django-allauth

我使用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)         

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

这是相当古老的帖子,但我认为这里的问题是如何完成用户创建。

目前,您正在使用以下方式创建用户。

User.objects.create(username=uname,password=pw)

对于任何其他对象,这将是一个很好的选择,但应该创建用户如下:

User.objects.create_user(username=uname,password=pw)

这就是为什么您看到密码未加密(纯文本)的原因。