1
我使用django-allauth == 0.32.0進行用戶身份驗證,它在我手動執行(註冊/登錄/註銷/等)時起作用。登錄硒測試Django的所有身份驗證失敗
我的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)
現在,我想寫硒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)
我在這裏錯過了什麼?
將大量日誌語句添加到您的登錄視圖中,以便您可以看到它所做的所有決定以及它收到的所有值。這應該指向你正確的方向。 (另外,你的'User'模型真的存儲明文密碼嗎?) –
這是另一回事,當我檢查'./manage.py shell'時,所有的密碼都是散列的,但是當我在測試過程中將它們打印出來時,它們以某種方式以純文本形式出現 – Tom