Eu resolvi fazer um teste com um modelo que contivesse um campo de imagem:
class Depoimento(models.Model):
'''
Classe de modelo de Depoimentos
'''
nome = models.CharField(max_length= 50, blank=False, null=False)
depoimento = models.TextField(max_length=200, null = False)
foto = models.ImageField(upload_to='fotos-depoimentos' , blank=True)
Para fazer os testes de requisição, eu criei a seguinte classe:
class DepoimentosTestCase(APITestCase):
def setUp(self):
self.usuario = User.objects.create_superuser(username='admin',password='admin')
self.url = reverse('Depoimentos-list')
self.client.force_authenticate(user = self.usuario)
self.foto = SimpleUploadedFile(
name='foto_de_teste.jpg',
content=open('Foto depoimento/download.jpg','rb').read(),
content_type = 'image/jpg'
)
self.depoimento_1 = Depoimento.objects.create(
nome = 'Teste um',
depoimento = 'Depoimento teste',
foto = self.foto
)
self.depoimento_2 = Depoimento.objects.create(
nome ='Teste dois',
depoimento='Depoimento teste 2',
foto = self.foto
)
Pelo fato de ser um campo de arquivo, os testes estão falhando para POST e PUT:
def test_requisicao_post_depoimentos(self):
dados = {
'nome': 'Testando',
'depoimento': 'Testando depoimento',
'foto' : self.foto
}
response = self.client.post(self.url,data = dados)
self.assertEqual(response.status_code,status.HTTP_201_CREATED)
def test_requisicao_put_depoimentos(self):
dados = {
'nome': 'Testando denovo',
'depoimento': 'Testando depoimento 2',
'foto': self.foto
}
response = self.client.put(self.url+'1/', dados)
self.assertEqual(response.status_code, status.HTTP_200_OK)
Não estou entendendo muito bem como posso corrigir isso