Невозможно присвоить объект "<django.contrib.auth.models.AnonymousUser:

Я пытался написать тест, используя следующий код:

class ViewTestCase(TestCase):
 def setUp(self):
    self.user = User.objects.create_user(first_name='tester',
        username='test1', 
        password='123', 
        email='testuser@something.com')

 def test_room_creation(self):
    c = Client()
    payload = {"titlePlanning": "Teste1","styleCards": "Fibonnaci","deck": ["1","2","3"]}
    c.login(username='test1',password='123')
    request = c.post('/room', payload, content_type='application/json')
    response = BeginRoom.as_view()(request)
    self.assertEqual(response.status_code, 200)
    print(request)

Представление, которое я тестирую, нуждается в следующих данных:

class BeginRoom(APIView):
permissions_classes = (IsAuthenticated,)

def post(self, request, format=None):
    data= self.request.data
    user = request.user
    name = data['titlePlanning'].strip()
    styleCards = data['styleCards']
    cards = data['deck']

Это модель, к которой представление обращается для выполнения POST:

class PokerRoom(models.Model):

status = models.CharField(max_length=1,choices=STATUS, verbose_name=_('status')
name = models.CharField(max_length=200,verbose_name=_('name of the room'))
styleCards = MultiSelectField(choices=CHOICES, default=FIBONACCI)    
user = models.ForeignKey(User, on_delete=DO_NOTHING)
deck = models.ForeignKey(Pack, on_delete=models.CASCADE)
active_story = models.OneToOneField('Story', on_delete=models.SET_NULL,verbose_name=_('active_storys'), 
related_name='active_in',
null=True)

Моя проблема заключается в том, что всякий раз, когда я запускаю свой тест, я получаю следующую ошибку:

ValueError: Cannot assign "<django.contrib.auth.models.AnonymousUser object at 
0x7fbfb77ca3d0>": "PokerRoom.user" must be a "User" instance.

Я думал, что мне нужно только войти под своим пользователем и после этого он будет инстанцирован, но это не работает. Кто-нибудь может мне помочь?

Похоже, что вы используете Django REST Framework с этим APIView? У меня нет опыта работы с ним, но у них есть свой собственный APIClient, который вы, возможно, захотите использовать вместо Client от Django: https://www.django-rest-framework.org/api-guide/testing/#authenticating

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