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]. Так что теперь все в порядке. Еще раз спасибо всем вам

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