相关疑难解决方法(0)

如何为 GitPython 克隆/拉取功能编写单元测试?

我有一个 python 项目,它使用 GitPython 对远程 Git 存储库执行克隆和拉取功能。

举个简单的例子:

import git
from git import Git
from git import Repo


def clone_and_checkout(full_dir, git_url, repo_ver):

    repo = Repo.clone_from(
        url=git_url,
        to_path=full_dir
    )

    # Trigger re-create if repository is bare
    if repo.bare:
        raise git.exc.InvalidGitRepositoryError

    # Set origin and pull
    origin = repo.remotes.origin
    origin.pull()

    # Check out desired version of repository
    g = Git(full_dir)
    g.checkout(repo_ver)
Run Code Online (Sandbox Code Playgroud)

我希望能够为这个函数编写一个单元测试,但显然这需要接触当前的外部系统。

我很好奇是否有人有模拟这种外部交互的经验,其方式类似于使用 Mock 来模拟 HTTP 调用。我希望能够以一种可以在测试时模拟的方式执行这些任务,而无需调用实际的 Git 远程。

我应该如何为此编写测试?

编辑:为了更清楚地了解我的要求,我应该提到我是 Mock 的新手,并且正在努力理解如何 Mock 这些类的实例而不是类本身。我的问题应该表述得更好 - 类似于“如何使用 Mock 来设置实例特定的属性,例如裸露?”

从那以后,我对 Mock …

python git unit-testing gitpython

10
推荐指数
1
解决办法
6387
查看次数

标签 统计

git ×1

gitpython ×1

python ×1

unit-testing ×1