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"
        )

и ваши тесты пройдут

Вернуться на верх