リモート Git リポジトリに対してクローンおよびプル機能を実行するために GitPython を使用している Python プロジェクトがあります。
簡単な例として:
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)
この関数の単体テストを記述できるようにしたいのですが、現状では明らかに外部システムに手を差し伸べる必要があります。
Mock を使用して HTTP 呼び出しをモックアップするのと同様の方法で、この外部インタラクションをモックアップした経験がある人がいるかどうかに興味があります。実際の Git リモートを呼び出す必要なく、テスト時にモックできる方法でこれらのタスクを実行できるようにしたいと考えています。
このためのテストを作成するにはどうすればよいですか?
編集:私が求めていることをより明確にするために、私はモックを初めて使用し、クラス自体ではなくこれらのクラスのインスタンスをモックする方法を理解するのに苦労していたことに言及する必要があります。私の質問は、「モックを使用してベアのようなインスタンス固有のプロパティを設定するにはどうすればよいですか?」という行に沿って、より適切に表現されているはずです。
それ以来、私はモックについて多くのことを学び、これを行う方法を理解したので、私自身の質問に対する答えを提供します.