Ошибка DRF Cannot assign must be instance при тестировании

Я очень новичок в Django и особенно в тестировании.

Я пытаюсь протестировать представление, которое получает объект ресурса и создает игровой раунд и объект gamesession (в запросе get).

Вот как выглядят мои тесты: test_views.py

class GameViewTests(APITestCase):

    def setUp(self):
        self.client = APIClient()
        self.resource = {'hash_id': '1404cc769fa538fab1b65b9cad201eca'}
        self.user = CustomUser.objects.create(username="carina")
        self.gametype = Gametype.objects.create(name="labeler", rounds=5, round_duration=60, enabled=True),
        self.gamesession = Gamesession.objects.create(user=self.user, gametype=self.gametype, created=datetime.now())
        self.gameround = Gameround.objects.create(user=self.user, gamesession=self.gamesession,
                                                  created=datetime.now(), score=0)
        self.game_data = {'gametype': self.gametype,
                                 'gamesession': self.gamesession,
                                 'gameround': self.gameround,
                                 'resource': self.resource}
        self.response = self.client.get('http://localhost:8000/api/game/',
                                        self.game_data,
                                        format="json")

    def test_get(self):
        self.client = APIClient()
        response = self.client.get('http://localhost:8000/api/game/')
        self.assertEqual(response.status_code, 200)

Когда я запускаю свой тест, я получаю ошибку ValueError: Cannot assign "(<Gametype: imageLabeler>,)": "Gamesession.gametype" должен быть экземпляром "Gametype".

Как сделать так, чтобы тест прошел?

    raise self.model.DoesNotExist(
frontend.models.Gametype.DoesNotExist: Gametype matching query does not exist.

У вас нет Gametype объекта с name imageLabeler в базе данных.

вы должны поймать DoesNotExist ошибку, чтобы избежать сбоя программы:

try:
    gt = Gametype.objects.get(name="imageLabeler")
except Gametype.DoesNotExist:
    print('Boom boom! here is no imageLabeler in DB')
    return Response(status=status.HTTP_404_NOT_FOUND)

Другая проблема заключается в том, что вы создаете объект с именем labeler:

self.gametype = Gametype.objects.create(name="labeler", rounds=5, round_duration=60, enabled=True)

Но пытаюсь получить imageLabeler:

gametype = Gametype.objects.all().get(name="imageLabeler")
Вернуться на верх