Я использую django-allauth==0.32.0 для аутентификации пользователя, и он работает, когда я делаю это вручную (регистрация/вход в систему/выход из системы/и т. д.).
Мои модели.py:
class Profile(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
user = models.OneToOneField(User, on_delete=models.CASCADE)
signal.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()
Мои просмотры.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)
Что мне здесь не хватает?
User
хранит пароли в открытом виде?) - person John Gordon   schedule 28.05.2017./manage.py shell
, все пароли в хэше, но когда я их распечатываю во время тестов, они почему-то появляются в виде обычного текста - person Tom   schedule 28.05.2017