如何确定是否使用Python模拟调用方法但不替换函数体?

有很多例子表明如何断言一个方法已经使用Moke调用,例如。,但所有这些都涉及将方法替换为 Mock 实例。assert_called_with()


我想要的是稍微不同一点,我希望函数在不替换其主体的情况下正常执行,但仍然希望断言函数是否已被调用。


例如。


def dosomething(...)

    # creates records that I will test later on.

    ....


def execute():

    ....

    dosomething()

在我的测试中



def test_a(...):

    with patch(dosomething...) as mocked:

        execute()

        mocked.assert_called_with()

我知道我可以针对创建的记录进行测试。是的,我同意,但我只是想看看是否有可能按照我的问题去做。dosomething()


慕容3067478
浏览 76回答 1
1回答

月关宝盒

使用 的 kwarg 并传递原始方法。Mockwraps例如>>> from unittest import mock>>> def hi(name): print('hi', name)>>> mock_hi = mock.Mock(wraps=hi)包装的函数由模拟调用。>>> mock_hi('Bob')hi Bob但它仍然是一个记住电话的模拟。>>> mock_hi.call_args_list[call('Bob')]回想一下,这将传递额外的kwargs到它所做的,所以你也可以使用这里的参数。例如patch()Mockwraps>>> with mock.patch('builtins.float', wraps=float) as mock_float:...     x = float('inf')...     print(x)  # If we hadn't wrapped, x would be a mock....     print(mock_float.call_args_list)...inf[call('inf')]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python