如何在提交时模拟仓库和测试异常

时间:2019-09-10 15:45:47

标签: python mocking gitpython

我正在使用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

0 个答案:

没有答案