在python的unittest中,如何模拟其中包含伪造图像的伪造文件夹?

时间:2018-09-21 09:14:12

标签: python image unit-testing opencv mocking

我正在尝试为一个功能创建单元测试,该功能从文件夹中读取每个图像并将它们保存在列表中。

以下是该函数的简化版本:

def read_images(directory):

    image_paths = os.listdir(directory)

    images = []
    for im in image_paths:
        images.append(cv2.imread(os.path.join(directory, im)))

    return images

This other question使我接近解决方案,但就我而言,我希望创建的伪造文件是图像(基本上是数组),以便可以用cv2.imread读取它们。

我的想法是不必创建任何临时文件夹,当然也不必连接任何外部文件夹或数据库。这可能吗?

编辑:为清楚起见,我不想创建临时文件夹或临时图像文件。我想知道是否有一种方法告诉程序:“ 这里有一个文件夹,并且在其中有一些具有这种形状的图像/数组”,但是实际上不必在内存中创建任何内容。

2 个答案:

答案 0 :(得分:0)

如果您实际上需要临时文件,则应检查tempfile

它允许您创建提供自动清理的临时文件和目录,因此,如果您有机会使用该文件来测试所需的内容,则不会有垃圾文件。

编辑

如果您真的不想使用临时文件或临时文件夹,这是另一个与您的问题有关的解决方案:

为测试生成内存图像。

from io import BytesIO
from PIL import Image

def create_in_memory_image():
    in_memory_file = BytesIO()
    image = Image.new('RGBA',
                      size=(0, 0),
                      color=(155, 0, 0))
    image.save(in_memory_file,
               'png')
    in_memory_file.name = 'tmp_testing_name.png'
    in_memory_file.seek(0)
    return in_memory_file

答案 1 :(得分:0)

  

如何模拟其中包含伪造图像的伪造文件夹?

Tweepy Cursor