Наноблог Артёма Сапегина

Тестирование моделей с FileField/ImageField в Django

Оказалось, что тестирование моделей с файлом (поле FileField) или картинкой (поле ImageField) в Django не так уж очевидно. Допустим, у нас есть модель:

class MagicPony(models.Model):
	photo = models.ImageField(_('Photo'), upload_to='uploads/ponies')

При загрузке файла через HTML-форму проблем не возникает, но, чтобы загрузить изображение с диска, нужно дополнительно обернуть наш файл в объект File:

from django.core.files import File

class PonyTest(TestCase):
	def test_magic_power(self):
		file = open('pony.jpg', 'rb')
		file = File(file)
		pony = MagicPony.objects.create(photo=file)

		# Теперь можно писать любые проверки (наличие магической силы,
		# количество копыт и т. п.)
blog comments powered by Disqus