我目前正在一个项目中,我正在使用gitpython检查git存储库中的一些内容。我现在开始为我的项目编写测试,通过这样做,我意识到我需要模拟一些东西。
在这个项目中,我通过克隆存储库以及使用本地存储库来制作git.Repo类。我可以在我的计算机上本地运行这些测试,但是无法假定这些测试将在其他计算机上运行。
本质上,问题是,如何在gitpython中模拟存储库?如何“假装”存储库位于当前计算机的指定路径上?
您可以在下面看到需要嘲笑的内容:
import git
repository = git.Repo('./local_repo_path')
基于https://stackoverflow.com/a/32428653/2903486中的代码
我能够在Python 3中创建一个模拟:
from unittest.mock import patch
@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