模拟pytes的目录子树

2024-04-24 04:11:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有从给定目录收集测试的递归代码。它依赖于几个函数:isdir、isfile和访问文件。它希望目录可以用操作系统列表目录. 在

为了测试这个函数,我需要以非常重要的方式模拟很多函数。有没有办法嘲笑所有的操作系统/操作系统路径与给定的文件列表有关联吗?类似“mock_subdir(example_in_tar_gz):”或某种DSL来描述模拟目录树结构。在

利益函数:

def gather_tests(path):
    if os.path.isdir(path):
        filelist = [os.path.join(path, f) for f in os.listdir(path)]
        filelist.sort()
        all_files = map(gather_tests, filelist)
        return filter(None, all_files)
    elif os.path.isfile(path) and os.access(path, os.X_OK):
        return path
    else:
        return None

谢谢。在


Tags: 文件path函数in目录列表returnos
1条回答
网友
1楼 · 发布于 2024-04-24 04:11:54

{可以使用^创建临时目录。这比嘲笑每个函数都要容易。在

或者,如果您真的想模拟函数,只需要模拟:isdir、listdir、isfile和access:

with mock.patch('module.isdir') as mock_isdir, \
        mock.patch('module.listdir') as mock_listdir, \
        mock.patch('module.iffile') as mock_isfile, \
        mock.patch('module.access') as mock_access:
    mock_isdir.return_value = True
    mock_listdir.return_value = ['file1', 'file2']
    mock_isfile.return_value = True
    mock_access.return_value = True

相关问题 更多 >