TypeError: Поле 'id' ожидало число, но получило <django.contrib.auth.models.AnonymousUser object at 0x7f5e95756920>.
первый раз спрашиваю на сайте.
Я тестировал приложение на Django Restframework. Оно должно проверять неаутентифицированного пользователя, который хочет создать отзыв. Я получил эту ошибку: TypeError: Field 'id' expected a number but got <django.contrib.auth.models.AnonymousUser object at 0x7f5e95756920>.
это тест класса: class ReviewTestCase(APITestCase):
Ошибка заключается в следующем:
self.client.force_authenticate(user=None, token=None)
Вы установили user=None, поэтому у вас нет идентификатора пользователя. Попробуйте установить его следующим образом:
self.client.force_authenticate(user=self.user, token=None)
Обратите внимание, что в соответствии с docs вам может потребоваться обновить пользователя из базы данных, если вы используете одного и того же пользователя в нескольких тестах:
Примечание: force_authenticate напрямую устанавливает request.user в экземпляр пользователя в памяти экземпляру пользователя в памяти. Если вы повторно используете один и тот же экземпляр пользователя в нескольких тестах, которые обновляют сохраненное состояние пользователя, вам может понадобиться вызвать refresh_from_db() между тестами.
Или, возможно, создайте другого пользователя для тестирования:
self.user = User.objects.create_user(
username="another_user", password="Password@123")
self.client.force_authenticate(user=self.user, token=None)
В элементах данных вы передаете объект, и вам нужно передать идентификатор. Измените это:
review_user: self.user.id
Спасибо всем, Я нашел ошибку. На самом деле проблема была не в func в tests.py, а в представлении, где я неправильно выразился: permission_classes = [IsAuthenticated] с: permission_clasees = [IsAuthenticated]. Так что теперь все в порядке. Еще раз спасибо всем вам