Django Test

37 views
Skip to first unread message

marcelo rocha

unread,
Mar 17, 2022, 4:10:05 PM3/17/22
to Django Brasil
Boa tarde grupo
Estou tentando fazer um teste em um metodo que processa um arquivo json e insere no banco.

class TrabalhoTest(TestCase):

def setUp(self):
path = os.path.join(settings.BASE_DIR, 'posicoes/posicoes01032022.json')
file = open(path, 'r')
self.texto_posicoes_1_dia = file.read()
path = os.path.join(settings.BASE_DIR, 'posicoes/posicoes01032022_dia4.json')
file = open(path, 'r')
self.texto_posicoes_2_dia = file.read()
empresa = Empresa(nome='Empresa', cnpj='1234567891234', endereco='endereco 1')
empresa.save()
trator = Trator(modelo='modelo 1', ativo=True, empresa=self.empresa)
trator.save()
self.disp = Dispositivo(modelo="modelo 1", mac='01:01:01:01:01',
versao="1.0", data_instalacao=datetime.datetime.now(),
trator=trator)

self.dispositivo = self.disp.save()

def test_recebe_dados_uma_data(self):
resultado = Trabalho.processa_posicoes(self.texto_posicoes_1_dia, self.dispositivo)
esperado = 1

self.assertEqual(len(resultado), esperado)

Mas ele me retorna esse erro:
raise self.model.DoesNotExist(
dispositivo.models.Dispositivo.DoesNotExist: Dispositivo matching query does not exist.



marcelo rocha

unread,
Mar 17, 2022, 4:16:46 PM3/17/22
to Django Brasil
Ignorem o "empresa=self.empresa)" já corrigi aqui mas o erro persiste

Avraham Serour

unread,
Mar 17, 2022, 4:24:22 PM3/17/22
to Django Brasil
qual linha da o erro?
coloca o traceback completo

--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasi...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/django-brasil/56838e96-abb3-40eb-9797-f00bddf36671n%40googlegroups.com.

Fabio Ferreira da Silva

unread,
Mar 17, 2022, 4:35:44 PM3/17/22
to django...@googlegroups.com
Olá! 

self.dispositivo = self.disp.save()

O método save retorna um objeto? Pelo que eu me lembre não retorna nada.
Você pode verificar o que está em self.dispositivo?

Att.

marcelo rocha

unread,
Mar 17, 2022, 5:31:55 PM3/17/22
to Django Brasil
traceback do erro:

Creating test database for alias 'default'...
System check identified no issues (0 silenced).
E
======================================================================
ERROR: test_recebe_dados_uma_data (mapa.tests.test_trabalho.TrabalhoTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/marcelo/developer/geosensor/mapa/tests/test_trabalho.py", line 32, in test_recebe_dados_uma_data
    resultado = Trabalho.processa_posicoes(self.texto_posicoes_1_dia, self.dispositivo)
  File "/home/marcelo/developer/geosensor/mapa/models.py", line 42, in processa_posicoes
    dispositivo = Dispositivo.objects.get(mac=chave_disp)
  File "/home/marcelo/developer/geosensor/.venv/lib64/python3.10/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/home/marcelo/developer/geosensor/.venv/lib64/python3.10/site-packages/django/db/models/query.py", line 439, in get

    raise self.model.DoesNotExist(
dispositivo.models.Dispositivo.DoesNotExist: Dispositivo matching query does not exist.

----------------------------------------------------------------------
Ran 1 test in 0.171s

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

marcelo rocha

unread,
Mar 17, 2022, 5:40:12 PM3/17/22
to Django Brasil
Olá Fabio.

Realmente não retorna nada. para mim retornava o mesmo objeto com a pk.
Corrigi e o erro continua

Fabio Ferreira da Silva

unread,
Mar 17, 2022, 8:26:44 PM3/17/22
to django...@googlegroups.com

No seu teste você deveria passar self.dispositivo.mac, que é o que o campo que a função tenta fazer a busca, correto?

Trabalho.processa_posicoes(self.texto_posicoes_1_dia, self.dispositivo)

--
Enviado do Gmail para celular

marcelo rocha

unread,
Mar 18, 2022, 8:43:52 AM3/18/22
to Django Brasil
Bom dia Fabio.
É isso mesmo. consertei meu código e funcionou. obrigado!
Reply all
Reply to author
Forward
0 new messages