簡體   English   中英

如何對失敗的文件刪除進行單元測試?

[英]How to unit-test for failed file deletion?

我的代碼中有一個os.remove() ,有時在本地運行時,由於OSError 13 - Permission Denied而失敗 - 因此我設置了一個try-except 我的自動化測試(Travis CI)在 Linux VM 實例上運行,所以我不知道如何讓os.remove在那里失敗以進行覆蓋。

我有哪些選擇 - 如何強制執行except塊? 或者,如何使用 Python 刪除保護文件?


注意:在調用測試方法之前在測試代碼中刪除它不是一種選擇; 該方法本身獲取要刪除的文件:

from pathlib import Path

paths = [str(x) for x in Path("directory/").iterdir() if 'abc' in x.stem]
if len(paths) > 0:  # if files are removed beforehand, len(paths) == 0
    try:
        [os.remove(p) for p in paths]
    except:
        pass  # stuff here

您可以使用unittest.mock.patch修補os.remove並將OSError指定為side_effect

from unittest.mock import patch

...

with patch('os.remove') as mock_remove:
    mock_remove.side_effect = OSError('Permission Denied')
    try:
        [os.remove(p) for p in paths]
    except OSError as e:
        pass # handle error here

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM