User.last_login не заполняется, как ожидалось, в тесте Django
Почему user.last_login None в следующем тесте:
from django.test import TestCase, Client
class TestModels(TestCase):
@classmethod
def setUpTestData(self):
self.user = User.objects.create(
username="testUser", password="testPassword"
)
self.auth_client = Client()
self.auth_client.login(username="testUser", password="testPassword")
def test_user_last_login(self):
user = User.objects.get(id=self.user.id) # pull the latest data
print(user.last_login). # <-- this is None, why?!
self.assertIsNotNone(user.last_login)
Я четко вхожу в систему, затем запрашиваю пользователя из базы данных, чтобы обновить данные.
last_login не обновляется, потому что вы не входите в систему. Все пароли пользователей зашифрованы, поэтому, когда вы создаете пользователя таким образом, его пароль будет в виде обычного текста, и вы не сможете по нему аутентифицироваться. Чтобы создать пользователя с зашифрованным паролем, измените
self.user = User.objects.create(
username="testUser", password="testPassword"
)
to
self.user = User.objects.create_user(
username="testUser", password="testPassword"
)
и ваши тесты пройдут