首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -模拟ZipFile

Python -模拟ZipFile
EN

Stack Overflow用户
提问于 2021-08-27 19:26:38
回答 1查看 40关注 0票数 0

我正在尝试使用python进行更深入的测试,现在我很难尝试为以下代码编写测试:

代码语言:javascript
复制
def get_files(zip_path: Path):
    archive = zipfile.ZipFile(os.path.join(os.path.dirname(__file__), '..', zip_path))
    python_files = []
    for x in archive.filelist:
        if x.filename.endswith(".py"):
            python_files.append(x)
    return python_files

我想出来的测试是这样的:

代码语言:javascript
复制
@mock.patch('zipfile.ZipFile')
def test_get_files(mock_zipfile):
    mock_zipfile.return_value.filelist.return_value = [zipfile.ZipInfo('py_file.py'), zipfile.ZipInfo('py_file.py'),
                                                       zipfile.ZipInfo('any_file.any')]
    nodes = get_ast_nodes(Path('/dummy/path/archive.zip'))
    assert len(nodes) == 2

但是我不能让测试通过,我也不知道哪里出了问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-07 22:06:45

如果有人在查这个,我可能还会加上答案。这就是我是如何让它工作的:

代码语言:javascript
复制
@mock.patch('zipfile.ZipFile')
def test_get_files(mock_zipfile):
    mock_zipfile.return_value.filelist = [zipfile.ZipInfo('py_file.py'), zipfile.ZipInfo('py_file.py'),
                                          zipfile.ZipInfo('any_file.any')]
    nodes = get_python_files(zipfile.ZipFile("dummy"))
    assert len(nodes) == 2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68958475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档