Python:模拟本地 gitpython 存储库

Kur*_*orn 5 mocking pytest python-3.x gitpython

我目前正在开发一个项目,使用 gitpython 检查 git 存储库中的一些内容。我现在开始为我的项目编写测试,通过这样做,我意识到我需要模拟一些东西。

在这个项目中,我通过克隆存储库以及使用本地存储库来创建 git.Repo 类。我可以在我的计算机上本地运行这些测试,但不可能假设这些测试将在其他计算机上运行。

本质上,问题是,如何在 gitpython 中模拟存储库?如何“假装”存储库存在于当前计算机上的指定路径上?

您可以在下面看到需要模拟的内容:

import git
repository = git.Repo('./local_repo_path')
Run Code Online (Sandbox Code Playgroud)

Ane*_*way 4

基于/sf/answers/2270005741/中的代码

我能够在 Python 3 中创建一个模拟:

from unittest.mock import patch
Run Code Online (Sandbox Code Playgroud)
@patch("git.Repo")
@patch("git.Git")
def test_stash_pull(mock_git, mock_repo):
    p = mock_git.return_value = False
    type(mock_repo.clone_from.return_value).bare = p
    # your git.Repo call here
Run Code Online (Sandbox Code Playgroud)