如何在python单元测试中模拟特定文件的存在?

时间:2016-10-22 00:57:36

标签: python unit-testing nose python-unittest

我正在用python编写嵌入式软件代码的单元测试。

其中一个文件需要存在特定文件。 (例如" /dir_name/file_name.txt")否则会引发错误。

通常,此文件存在于硬件设备上,我的python代码读取此文件。在为python代码编写单元测试时,如何模拟文件的存在?

tempfile.mkstemp()似乎没有生成我想要的确切路径/文件名,即/dir_name/file_name.txt。它总是添加一些随机字母。

这是Python3.4。是否可以使用unittest.mock完成此操作?

1 个答案:

答案 0 :(得分:0)

您可以创建一个用于创建和删除文件的上下文管理器。

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()