繁体   English   中英

调用方法后,属性为“ Called”的Python模拟方法仍然为False

[英]Python mock method attributed “called” is still False after method is called

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

当我进行调试时,成功调用了get_c(),但是named_mock_meth_1的被调用属性从未改变。 我需要做更多的工作来正确模拟该方法吗?

您对myclass.get_c两次修补,所以我不知道它的行为,但这可能不是您的本意。 将其中之一切换到myclass.get_a ,您可能会好起来的。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM