繁体   English   中英

补丁库功能进行测试

[英]Patch library functions for testing

我目前正在为应用程序编写一些测试,并且我想测试错误处理。

例如,我想在shutil.copyfile()引发异常时检查应用程序的行为。 由于此函数的src和dst是在调用shutil.copyfile()的函数中建立的,因此无法从测试中触发失败。

我目前正在做的事情如下。

import shutil as f
def __patch():

    def my_func(*args, **kwargs):
        raise f.SameFileError

    f.copyfile = my_func

现在,我希望在我的应用程序中随时调用copyfile,都会引发SameFileError错误。 但这暂时不会发生。 shutil的copyfile函数仍在执行。

另一方面,如果对具有要在类内进行修补的函数的库执行相同的操作,则修补工作有效,并且我的自定义函数会替换库中的函数。 这适用于修补zipfile库中的extractall()函数,因为要修补的函数在类内部。

from zipfile import ZipFile, BadZipFile
def __patch():

    def my_func(*args, **kwargs):
        raise BadZipFile

    ZipFile.extractall = my_func

谁能告诉我如何从shutil上为copyfile()运行它。 不幸的是,我不能在这里使用模拟库。

提前致谢

我找到了解决方案。

导入应按以下步骤进行:

import shutil as copy

代替

from shutil import copyfile

然后该函数应称为copy.copyfile()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM