Fabrizio A Fabrizio A - 27 days ago 6
Python Question

Django testing model with ImageField

I need to test the Photo model of my Django application. How can I mock the ImageField with a test image file?

tests.py

class PhotoTestCase(TestCase):

def test_add_photo(self):
newPhoto = Photo()
newPhoto.image = # ??????
newPhoto.save()
self.assertEqual(Photo.objects.count(), 1)

Answer

For future users, I've solved the problem. You can mock an ImageField with a SimpleUploadedFile instance.

test.py

from django.core.files.uploadedfile import SimpleUploadedFile

newPhoto.image = SimpleUploadedFile(name='test_image.jpg', content=open(image_path, 'rb').read(), content_type='image/jpeg')