我正在使用 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
于在我网站的其他地方上传测试。在 shell 中运行代码我得到以下信息form.errors
:'Upload a valid image. The file you uploaded was either not an image or a corrupted image.'
因此我认为问题出在content
orcontent_type
字段中。我已尝试在此答案中使用图像作为字符串,但无济于事。[编辑:图像作为字符串的方法实际上是答案,但我一定实施得很糟糕。接受的答案被验证为有效。]我在SimpleUloadedFile 源代码中找不到任何线索。
该表格在现实中工作正常,但我想确保它包含在未来维护的工作测试中。理想情况下,我希望避免必须存在实际test.jpg
文件,因为图像在我的.gitignore
文件中,我不想开始破解目前非常顺利的自动化部署。
我应该提供什么输入才能SimpleUploadedFile
正确验证?