Python: издевательство над локальным репозиторием gitpython

В настоящее время я работаю над проектом, в котором я использую gitpython для проверки нескольких вещей в репозиториях git. Теперь я начал писать тесты для своего проекта, и при этом я понял, что мне нужно поиздеваться над некоторыми вещами.

В этом проекте я создаю классы git.Repo, клонируя репозитории, а также используя локальные репозитории. Я мог бы запускать эти тесты локально, на своем компьютере, но нельзя будет предположить, что тесты будут работать на других компьютерах.

По сути, вопрос в том, как мне издеваться над репозиториями в gitpython? Как я могу «притвориться», что репозиторий существует по указанному пути на текущем компьютере?

Вы можете увидеть, что нужно издеваться ниже:

import git
repository = git.Repo('./local_repo_path')

person Kuratorn    schedule 25.11.2019    source источник


Ответы (1)


на основе кода в 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
person Aneuway    schedule 02.01.2020