我如何模拟一个设置大小的文件对象?

2024-06-10 05:47:43 发布

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

我有一个函数,如果文件太大(大于1MB),就会引发异常。我想在不使用真实图像的情况下测试这个函数。我知道有可能在mock_打开的情况下模拟文件对象,但是如何给这个假文件一个大小呢?在

下面是我要测试的函数:

def _check_image_size(img_path):
    megabyte = 1048576

    if os.path.getsize(img_path) > megabyte:
        raise ValueError("Image must be less than or equal to 1MB in size.")

所以,我只想用另一种方式重申这个问题:如何在不使用大于1MB的实际文件的情况下测试这个函数?在

另外,我应该为这个函数写一个测试吗?我是一个没有太多经验的新开发人员。我想测试这个是否太过分了?在


Tags: 文件path对象函数图像imageimgsize
3条回答

如果您正在测试这个,您应该模拟os.path.getsize而使用unittest.mock模拟的file对象提供了一个read方法,可能是writeclose和其他特定于文件对象的函数-但是这个函数对文件系统上的实际文件进行系统stat调用:在文件系统上无法“看到”模拟的文件对象。在

因此,我们要做的是信任os.path.getsizeworks,并将其返回值模拟为“True”和“False”,以编写所需的测试。在

模拟函数本身更简单。在

^{1}$

或者,不使用mock库(或类似的库),monkey直接修补函数。在

^{pr2}$

莫克是你的朋友

^{1}$

我认为测试这样的函数是可以的。在

相关问题 更多 >