在本例中,是否有一种方法可以让call_count计算出模拟调用:
from mock import MagicMock
mock = MagicMock()
mock.get_query(arg=1).execute()
mock.get_query(arg=2).execute()
print('count:', mock.get_query.call_count)
print('calls:', mock.get_query.mock_calls)实际结果:
count: 2
calls: [call(arg=1), call().execute(), call(arg=2), call().execute()]预期结果:
count: 2
calls: [call(arg=1), call(arg=2)]我理解mock_calls。文档非常清楚:
mock_calls记录对模拟对象、其方法、魔术方法和返回值模拟的所有调用。
我想知道是否有一种优雅的方式过滤mock_calls。也有method_calls,但仍然不是它。
发布于 2022-11-01 13:39:13
看起来,您正在寻找对应于每个对call()的调用的mock.get_query对象的列表。我认为mock.get_query.call_args_list会给你你想要的:
>>> from mock import MagicMock
>>> mock = MagicMock()
>>> mock.get_query(arg=1).execute()
<MagicMock name='mock.get_query().execute()' id='139688065592160'>
>>> mock.get_query(arg=2).execute()
<MagicMock name='mock.get_query().execute()' id='139688065592160'>
>>> mock.get_query.call_args_list
[call(arg=1), call(arg=2)]来自医生们
call_args_list这是一个按顺序对模拟对象进行的所有调用的列表(所以列表的长度是它被调用的次数)。在调用之前,它是一个空列表。call对象可用于方便地构造与call_args_list相比较的调用列表。
https://stackoverflow.com/questions/74266599
复制相似问题