我正在使用gitpython,我想使用模拟来测试代码。
基本上,我想测试一下如果尝试在不存在的分支上进行提交,则会引发gitdb.exc.BadName。
我尝试设置一个非裸模拟回购,还模拟了一个get repo返回代码。当我在repo.commit(“ unknown”)上使用模拟回购进行测试时,它在声明时失败...
要测试的代码:
class SomeGitProcess:
def __init__(self) -> None:
self.repo = None
self.base_branch_commit = None
def get_repo(self, git_repo_path: str) -> Repo:
self.repo = Repo(git_repo_path)
return self.repo
def get_branch_commit(self, branch_name: str) -> git.objects.commit.Commit:
branch_commit = self.repo.commit(branch_name)
return branch_commit
git_repo_path = some valid path
repo = get_repo(git_repo_path)
这是我尝试使用模拟回购进行测试的方式:
class_instance = SomeGitProcess()
@patch('git.Repo')
@patch('module_name.SomeGitProcess.get_repo')
def test_exception(self, mock_get_repo, mock_repo):
# Setup Mock repo
type(mock_repo.clone_from.return_value).bare = unittest.mock.PropertyMock(return_value=False)
mock_get_repo.return_value = mock_repo
self.assertRaises(gitdb.exc.BadName, self.class_instance.get_branch_commit, "unknown")
我期望断言能够成功,但是它说:
AssertionError: BadName not raised by get_branch_commit