1
resposta

Dúvida nos testes do django

O que há de errado neste teste do django?

def test_nao_autorizado(self):
    response = self.client.get(self.list_url)
    self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

def test_user_focado(self):
    self.client.force_authenticate(self.user)
    response = self.client.get(self.list_url)
    self.assertEqual(response.status_code, status.HTTP_200_OK)
1 resposta

Olá, João! Tudo bem?

No primeiro teste, test_nao_autorizado, você está tentando acessar self.list_url sem autenticação. Se o seu sistema está configurado para permitir acesso não autenticado a essa URL, o teste falhará porque a resposta não será HTTP_401_UNAUTHORIZED, mas sim algo como HTTP_200_OK.

No segundo teste, test_user_focado, você está autenticando o cliente antes de tentar acessar a URL. Se o usuário não tiver permissão para acessar a URL, ou se houver algum outro problema com a autenticação, a resposta pode não ser HTTP_200_OK.

Uma maneira de verificar o que está acontecendo seria imprimir a resposta em cada teste para ver o que está sendo retornado. Por exemplo:

def test_nao_autorizado(self):
    response = self.client.get(self.list_url)
    print(response)
    self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

def test_user_focado(self):
    self.client.force_authenticate(self.user)
    response = self.client.get(self.list_url)
    print(response)
    self.assertEqual(response.status_code, status.HTTP_200_OK)

Isso pode te dar uma ideia melhor do que está acontecendo. Outra sugestão seria verificar se self.list_url e self.user estão sendo definidos corretamente.

Espero ter ajudado e bons estudos!

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