Je travaille sur un TestCase pour mon projet, impliquant Image et FileFields. Certains objets sont chargés avec des appareils, certains objets sont créés pendant les tests. Je me suis moqué de mon image avec un fichier InMemoryUploadedFile.Django Test mocké ImageField empêcher le téléchargement ou nettoyer après les tests
Lors de la création d'un nouvel objet de test, l'image simulée est en cours de téléchargement dans le répertoire MEDIA_ROOT, à l'emplacement correct défini dans la méthode upload_to.
Ces images simulées sont actuellement stockées localement pendant les tests. Il y a quelques informations sur comment se moquer d'une image. Mais je ne pouvais pas vraiment trouver de bonnes informations sur le nettoyage de ces téléchargements après les tests.
Question:
Est-il possible d'éviter ces fichiers effectivement téléchargé ou est-ce impossible/dis-encouragés?
ou
Si ces fichiers en cours de téléchargement en faveur des essais (si oui, pourquoi?), Et nettoyé après lors du démontage du moteur? Et quel serait un moyen approprié de nettoyer ces fichiers téléchargés?
Un peu de code de la situation actuelle avec laquelle je travaille, recadrée à la taille pour correspondre à la question. Je ne cherche pas un échantillon complet, mais juste une poussée dans la bonne direction. Merci pour votre temps à l'avance.
recadrée modèle:
def project_image_upload_location(instance, filename):
return 'uploads/projects/images/%s' % \
services.unique_filename(filename)
class ProjectImage(models.Model):
project = models.ForeignKey(
'projects.Project')
name = models.CharField(
_("Image name"),
max_length=35)
image = models.ImageField(
_("Project image"),
upload_to=project_image_upload_location,
width_field='image_width',
height_field='image_height')
image_width = models.IntegerField(
default=0)
image_height = models.IntegerField(
default=0)
Coupées TestCase:
from django.core.files.uploadedfile import InMemoryUploadedFile
from django.test import TestCase
from PIL import Image
import StringIO
from projects.models import ProjectImage
from projects import services
class ProjectsTest(TestCase):
fixtures = ['projects']
def _create_project_image(self, project, name):
return ProjectImage.objects.create(
project=project,
name=name,
description="Description",
image=self._create_mock_image(name="Mocked Image"),
is_primary=True,
is_published=True)
def _get_project_image(self, name):
return ProjectImage.objects.get(name=name)
def _create_mock_image(self, name):
name = name + '.jpg'
io = StringIO.StringIO()
size = (200,200)
color = (255,0,0)
image = Image.new("RGB", size, color)
image.save(io, format='JPEG')
image_file = InMemoryUploadedFile(io, None, name, 'jpeg', io.len, None)
image_file.seek(0)
return image_file
def test_update_project_set_updated_datetime(self):
project = self._get_project("Project B")
self.assertEqual(project.updated_datetime, None)
project.save()
self.assertTrue(isinstance(project.updated_datetime, datetime))