我有一个以下模型:
class Room(models.Model):
order = models.SmallIntegerField()
name = models.CharField(max_length=20)
background = models.ImageField(upload_to='room_background', blank=False, null=False)
background_preview = ImageSpecField(source='background', processors=[ResizeToFit(300, 400)])
def serialize(self):
room_dict = model_to_dict(self)
room_dict['background_preview_url'] = self.background_preview.url
return room_dict
我没有直接在我的观看中使用空间对象,而是将它们转换为dict,并使用&background.dreview_url'键。
现在我想用序列化的房间对象编写一些Django测试。问题是,如果我这样做:
test_room = Room(order=1)
test_room.save
test_room.serialize()
ImageKit会抛出MissingSource错误,因为我的测试室中没有背景图像来生成预览。
我如何在测试中更好地克服这个问题?我应该携带背景图像的夹具吗? 或者我应该写第二个serialize_for_test()方法? 或者也许我可以使用background_preview字段的一些测试值来设置Room()? - 我尝试了这个,但直接的房间(background_preview =' fake_url')没有用。
感谢。
答案 0 :(得分:1)
解决方案,对我有用:
from django.core.files.uploadedfile import SimpleUploadedFile
test_room.image = SimpleUploadedFile(name='foo.gif', content=b'GIF87a\x01\x00\x01\x00\x80\x01\x00\x00\x00\x00ccc\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02D\x01\x00')
test_room.save