如何检查是否调用了@patchedout python方法,而不改变其行为?

2024-04-26 15:10:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在使用python mock模块进行测试用例。我经常用@patch('my_method')装饰器装饰我的测试用例。然后在测试用例的主体中,我在修补方法上设置了.return_value属性或.side_effect属性来模拟其行为。同样在测试用例中,我检查修补方法是否使用.assert_called_once()调用。这个很好用。没问题。例如:

from mock import patch

@patch('my_method')
def test_case_1(self, mock_my_method):
    mock_my_method.return_value = None
    # Do some testing here
    mock_my_method.assert_called_once()

现在我想做一些稍微不同的事情:我只想检查一次是否调用了修补过的方法(通过使用^{但是,我不想更改方法的行为,也不想指定假返回值。我该怎么做


Tags: 模块方法return属性valuemy测试用例装饰
1条回答
网友
1楼 · 发布于 2024-04-26 15:10:28

如果只想将patch用于其调用日志功能,而不模拟原始函数的行为,请将原始函数指定为模拟的side_effect

@patch('my_function', side_effect=my_function)
...

side_effect名称具有误导性。如果mock有一个^{}函数,那么调用mock将调用side_effect,并返回或引发side_effect返回或引发的任何内容。将原始函数用作side_effect意味着我们得到了原始函数的行为(side_effect可以是除函数之外的一些其他类型的东西,但我们这里不需要该功能。)

相关问题 更多 >