【问题标题】:Python - Mocking a ZipFilePython - 模拟 ZipFile
【发布时间】:2021-08-27 19:26:37
【问题描述】:

我正在尝试进一步使用 python 进行测试,现在我很难为以下代码编写测试:

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

我想出的测试是这样的:

@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

但我无法通过测试,也不知道出了什么问题。

【问题讨论】:

    标签: python testing mocking


    【解决方案1】:

    如果有人正在查找此内容,我也可能会添加答案。这就是我让它工作的方式:

    @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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多