Image 및 FileFields와 관련된 프로젝트 용 TestCase에서 작업 중입니다. 일부 오브젝트에는 조명기가로드되고 일부 오브젝트는 테스트 중에 작성됩니다. 내 이미지를 InMemoryUploadedFile로 조롱했습니다.Django Test ImageField가 테스트 후 업로드 또는 정리를 막아 버렸습니다.
새 테스트 객체를 만들 때 조롱 된 이미지는 upload_to 메소드에 정의 된 올바른 위치에 의 MEDIA_ROOT 디렉토리에 업로드됩니다.
이러한 조롱 된 이미지는 테스트 중에 실제로 로컬에 저장됩니다. 에 대한 약간의 정보가 있습니다.. 그러나 테스트 후에 이러한 업로드를 정리하는 데 대한 좋은 정보를 찾을 수 없었습니다.
질문 :
실제로 업로드되는이 파일을 방지하기 위해 가능성이있는 경우, 또는이 불가능/DIS가-격려입니까?
또는
이러한 파일은 (만약 그렇다면, 왜?) 시험에 찬성 업로드와의 tearDown시 이후 청소하고해야 하는가? 업로드 된 파일을 정리하는 적절한 방법은 무엇입니까?
현재 작업하고있는 코드 중 일부는 크기에 맞게 잘랐다. 나는 완벽하게 해결 된 표본을 찾는 것이 아니라 올바른 방향으로 추진하는 방법을 찾고 있습니다. 사전에 시간 내 주셔서 감사합니다.
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))