有很多例子表明如何断言一个方法已经使用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')]
添加回答
举报
0/150
提交
取消