簡體   English   中英

如何在python單元測試中模擬特定文件的存在?

[英]How to mock the existence of a particular file in python unit test?

我正在為python中的嵌入式軟件代碼編寫單元測試。

其中一個文件需要存在特定文件。 (例如“/dir_name/file_name.txt”)否則會引發錯誤。

通常,此文件存在於硬件設備上,我的python代碼讀取此文件。 在為python代碼編寫單元測試時,如何模擬文件的存在?

tempfile.mkstemp()似乎沒有生成我想要的確切路徑/文件名,即/dir_name/file_name.txt 它總是添加一些隨機字母。

這是Python3.4。 是否可以使用unittest.mock實現這一目標?

您可以創建一個用於創建和刪除文件的上下文管理器。

from contextlib import contextmanager

@contextmanager
def mock_file(filepath, content=''):
    with open(filepath, 'w') as f:
        f.write(content)
    yield filepath
    try:
        os.remove(filepath)
    except Exception:
        pass


def test_function():
    with mock_file(r'/dirname/filename.txt'):
        function()

暫無
暫無

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

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