调用方法后,归因于“被调用”的Python模拟方法仍为False

时间:2017-10-30 21:21:17

标签: python unit-testing mocking patch

我正在测试使用Python模拟库调用方法。外部方法是:

def get_abc():
    get_a()
    get_b()
    get_c(False)

测试用例如下:

@mock.patch('myclass.get_a')
@mock.patch('myclass.get_b')
@mock.patch('myclass.get_c')
def test_inner_methods(self, mock_meth_1, mock_meth_2, mock_meth_3):
    o = Outerclass(config_file=cfg)
    o._get_abc()
    self.assertTrue(mock_meth_1.called)
    mock_meth_1.assert_called_with(False)

当我进入debug时,get_c()被成功调用,但mock_meth_1的被调用属性永远不会改变。我是否需要做更多来正确模拟方法?

1 个答案:

答案 0 :(得分:1)

你修补myclass.get_c两次,所以我不知道它会如何表现,但它可能不是你想要做的。将其中一个切换到myclass.get_a,你可能会没事的。

您可能还会发现mock_meth1.assert_called()self.assertTrue(mock_meth_1.called)更容易。