簡體   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