为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕容3067478 2022-09-13 20:06:32
有很多例子表明如何断言一个方法已经使用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()
查看完整描述

1 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

使用 的 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')]


查看完整回答
反对 回复 2022-09-13
  • 1 回答
  • 0 关注
  • 75 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信