我目前正在为应用程序编写一些测试,并且我想测试错误处理。
例如,我想在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()运行它。不幸的是,我不能在这里使用模拟库。
预先感谢
答案 0 :(得分:0)
我找到了解决方法。
导入应按以下步骤进行:
import shutil as copy
代替
from shutil import copyfile
,然后将该函数调用为copy.copyfile()