Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用ImageSpecField测试Django模型?_Python_Django_Django Imagekit - Fatal编程技术网

Python 如何使用ImageSpecField测试Django模型?

Python 如何使用ImageSpecField测试Django模型?,python,django,django-imagekit,Python,Django,Django Imagekit,我得到了以下模型: 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(sou

我得到了以下模型:

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\u preview\u url”键进行扩展

现在我想使用序列化的room对象编写一些Django测试。问题是如果我这样做:

test_room = Room(order=1)
test_room.save
test_room.serialize()
ImageKit抛出了一个MissingSource错误,因为在我的测试室中没有可以生成预览的背景图像

我如何在考试中更好地克服这个问题?我应该带一个背景图片的固定装置吗? 还是应该为_test()方法编写第二个序列化_? 或者,我可以将房间()实例化为背景预览字段的一些测试值?-我试过了,但是直接聊天室(background\u preview='fake\u url')不起作用


谢谢。

对我有效的解决方案:

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