Я работаю над TestCase для своего проекта, используя некоторые Image и FileFields. Некоторые объекты загружаются с помощью светильников, некоторые объекты создаются во время тестов. Я высмеял свое изображение с помощью InMemoryUploadedFile.Django Test mocked ImageField предотвращает загрузку или очистку после тестов
При создании нового тестового объекта в каталоге MEDIA_ROOT загружается в правильном месте, определенном в методе upload_to.
Эти издевавшиеся изображения на самом деле хранятся локально во время испытаний. Существует довольно некоторая информация о , как насмехаться с изображением. Но я не мог найти хорошую информацию об очистке этих загрузок после тестов.
Вопрос:
Есть ли возможность предотвратить эти файлы на самом деле загружается или это невозможно/DIS-поощряются?
или
Если эти файлы загружаются в пользу тестов (если да, то почему?), А потом чистить во время демонтажа? И что было бы подходящим способом для очистки этих загруженных файлов?
Некорректный код текущей ситуации, с которой я работаю, обрезанный до размера, чтобы соответствовать вопросу. Я не ищу полностью отработанный образец, а просто толчок в правильном направлении. Спасибо за ваше время заранее.
Обрезанные модель:
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)
Кадрированные 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))