Я пишу модульные тесты, используя Django 1.7 с Python 3.4. Форма ниже проверяется правильно, когда элемент file_data
закомментирован. С включенным file_data
он не проверяется, и тест завершается неудачно.
from django.core.files.uploadedfile import SimpleUploadedFile
...
data = {
'phone_number': '123456',
'job': Job.objects.latest('id').pk,
}
file_data = {
'portrait': SimpleUploadedFile(
content=b'',
content_type='image/jpeg',
name='test.jpg',
)
}
form = PersonForm(data, file_data)
self.assertTrue(form.is_valid())
Подобный код отлично работает для FileField
тестов загрузки в другом месте моего сайта. Запустив код в оболочке, я получаю следующее в form.errors
: 'Upload a valid image. The file you uploaded was either not an image or a corrupted image.'
Поэтому я думаю, что проблема заключается либо в полях content
, либо в полях content_type
. Я пытался использовать изображение как строку, как в этом ответе, но безрезультатно. [Редактировать: подход «изображение как строка» на самом деле был ответом, но я, должно быть, плохо его реализовал. Принятый ответ проверен как работающий.] Я не смог найти никаких подсказок в Исходный код SimpleUloadedFile.
На самом деле форма работает нормально, но я хочу убедиться, что она покрыта рабочим тестом для будущего обслуживания. В идеале я бы хотел избежать наличия фактического файла test.jpg
, потому что изображения находятся в моем файле .gitignore
, и я не хочу начинать взламывать то, что в настоящее время является очень плавным автоматическим развертыванием.
Какой ввод я должен ввести SimpleUploadedFile
, чтобы он правильно прошел проверку?