AnonymousUser автоматически создается для TestCase
Я столкнулся с ситуацией, когда при создании TestCase автоматически создается анонимный пользователь, чего не ожидалось и не хотелось бы.
Приведенный ниже тестовый пример - не единственный тестовый пример, в котором наблюдается такое поведение. Для моего проекта была создана пользовательская модель User
, но я не уверен, что это случайно не привело к такому поведению.
В python manage.py shell
я запросил всех пользователей с помощью get_user_model().objects.all()
; в наборе запросов был экземпляр <User: AnonymousUser>
. Он был удален, когда я закрыл/переоткрыл оболочку и проверил администратора. Чтобы указать, какую базу данных я использую для тестирования, я использую встроенную тестовую базу данных, которую Django предоставляет с SQLite
Что может быть причиной того, что тест-кейс автоматически заполняется AnonymousUser?
from django.test import TestCase
class TestViewUserQuestionsPostedPage(TestCase):
@classmethod
def setUpTestData(cls):
cls.viewed_user = get_user_model().objects.create_user("ItsYou")
testcase_users = get_user_model().objects.all()
request = RequestFactory().get(reverse("authors:profile", kwargs={'id': 1}))
cls.view = UserProfilePage()
cls.view.setup(request, id=2)
cls.view_context = cls.view.get_context_data()
def test_viewed_profile_of_user(self):
self.assertIsInstance(self.view, Page)
self.assertIn('user', self.view_context)
self.assertEqual(self.view_context['object'], self.viewed_user)
(Pdb) testcase_users = get_user_model().objects.all()
(Pdb) testcase_users
<QuerySet [<User: AnonymousUser>, <User: ItsYou>]>
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
username = CharField(
unique=True, max_length=16,
error_messages={
"unique": "Username not available"
}
)