我正在测试使用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的被调用属性永远不会改变。我是否需要做更多来正确模拟方法?
答案 0 :(得分:1)
你修补myclass.get_c
两次,所以我不知道它会如何表现,但它可能不是你想要做的。将其中一个切换到myclass.get_a
,你可能会没事的。
您可能还会发现mock_meth1.assert_called()
比self.assertTrue(mock_meth_1.called)
更容易。