基于ImageField的Django测试模型

2024-05-17 19:45:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要测试我的Django应用程序的照片模型。如何用测试图像文件模拟ImageField?

测试.py

class PhotoTestCase(TestCase):

    def test_add_photo(self):
        newPhoto = Photo()
        newPhoto.image = # ??????
        newPhoto.save()
        self.assertEqual(Photo.objects.count(), 1)

Tags: djangopy模型testself应用程序def图像文件
3条回答

对于未来的用户,我已经解决了这个问题。 可以用SimpleUploadedFile实例模拟ImageField。

测试.py

from django.core.files.uploadedfile import SimpleUploadedFile

newPhoto.image = SimpleUploadedFile(name='test_image.jpg', content=open(image_path, 'rb').read(), content_type='image/jpeg')

告诉mock库基于Django的文件类创建mock对象

import mock
from django.core.files import File

file_mock = mock.MagicMock(spec=File, name='FileMock')

然后在你的测试中使用

newPhoto.image = file_mock

可以使用临时文件,使用^{}。所以你不需要真正的文件来做测试。

import tempfile

image = tempfile.NamedTemporaryFile(suffix=".jpg").name

如果您喜欢手动清理,请使用tempfile.mkstemp()

相关问题 更多 >