python-3.x - python : Mocking a local gitpython repository

标签 python-3.x mocking pytest gitpython

我目前正在处理一个项目,在该项目中我使用 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

关于python-3.x - python : Mocking a local gitpython repository,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59029853/

相关文章:

python - 使用打印的意外输出

python - 无法从 python 3 中的输入文件中找到子字符串

java - 使用 Mockito/EasyMock 模拟自动连线 Web 服务

python - 当使用 py.test 测试该模块时,如何通过相对于 Python 模块的路径打开文件?

python - Pyro4 和普通的旧数据对象

python - 为什么 pycharm 对类或函数之外的 None 给出 "expected type"警告?

java - 如何覆盖单元测试中被测试类调用的方法

php - 如何模拟对象属性?

python - 函数中的 side_effect 与装饰器中的 side_effect 之间的区别

python - 执行python的测试函数时出错