1
resposta

Erro ao executar test_fixture

Estou com um erro que diz que a minha classe aluraflix.programas está com problemas. Ainda não consegui uma solução. Conseguem me ajudar?

Classe test_fixture:

from django.test import TestCase
from aluraflix.models import Programa

class FixturesDataTestCase(TestCase):

    def setUp(self):
        fixtures = ['programas_iniciais']

    def test_carregamento_dados_fixture(self):
        programa_bizarro = Programa.objects.get(pk=1)
        todos_programas = Programa.objects.all()
        self.assertEqual(programa_bizarro, 'Coisas bizarras')
        self.assertEqual(len(todos_programas), 9)

Model:

from django.db import models

class Programa(models.Model):
    TIPO = (('F', 'Filme'),('S', 'Serie'),)

    titulo = models.CharField(max_length=50)
    tipo = models.CharField(max_length=1,choices=TIPO, blank=False, null=False,default='F')
    data_lancamento = models.DateField()
    likes = models.PositiveIntegerField(default=0)
    dislikes= models.PositiveIntegerField(default=0)

    def __str__(self):
        return self.titulo

Mensagem de erro:

(.venv) PS C:\Users\fknet\OneDrive\Área de Trabalho\Projetos Python\Projeto-Api-Teste-e-Doc> python manage.py test
Found 9 test(s).
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
.....E...
======================================================================
ERROR: test_carregamento_dados_fixture (testes.test_fixtures.FixturesDataTestCase.test_carregamento_dados_fixture)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Users\fknet\OneDrive\Área de Trabalho\Projetos Python\Projeto-Api-Teste-e-Doc\testes\test_fixtures.py", line 10, in test_carregamento_dados_fixture
    programa_bizarro = Programa.objects.get(pk=1)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\fknet\OneDrive\Área de Trabalho\Projetos Python\Projeto-Api-Teste-e-Doc\.venv\Lib\site-packages\django\db\models\manager.py", line 87, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\fknet\OneDrive\Área de Trabalho\Projetos Python\Projeto-Api-Teste-e-Doc\.venv\Lib\site-packages\django\db\models\query.py", line 637, in get
    raise self.model.DoesNotExist(
aluraflix.models.Programa.DoesNotExist: Programa matching query does not exist.

----------------------------------------------------------------------
Ran 9 tests in 4.161s

FAILED (errors=1)
Destroying test database for alias 'default'...
1 resposta

Olá, Franklin! Tudo bem com você? Espero que sim!

Peço desculpa pela demora em responder o seu tópico.

Pelo que pude analisar, o erro que você está enfrentando está relacionado ao fato de o programa com o ID 1 não existir no banco de dados. Isso ocorre porque você está tentando acessar esse programa na sua classe de teste, mas ele não foi criado ou encontrado durante a execução do teste.

Com isso, peço que verifique as suas importações! Certifique-se que os nomes das classes e arquivos que você está utilizando são os mesmos do que estão em suas importações.

Além disso, reparei que você está comparando o objeto programa_bizarro com a string 'Coisas bizarras' usando o método self.assertEqual. No entanto, o método assertEqual compara os valores dos objetos e não os objetos em si. Portanto, você deve comparar o atributo titulo do objeto programa_bizarro com a string. Ficaria assim:

self.assertEqual(programa_bizarro.titulo, 'Coisas bizarras')

Espero ter ajudado. Caso tenha mais dúvidas relacionadas com esse tópico, estarei á disposição para ajudá-lo.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.