首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python :由call_count计数的模拟调用

Python :由call_count计数的模拟调用
EN

Stack Overflow用户
提问于 2022-10-31 16:46:54
回答 1查看 80关注 0票数 0

在本例中,是否有一种方法可以让call_count计算出模拟调用:

代码语言:javascript
复制
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)

实际结果:

代码语言:javascript
复制
count: 2
calls: [call(arg=1), call().execute(), call(arg=2), call().execute()]

预期结果:

代码语言:javascript
复制
count: 2
calls: [call(arg=1), call(arg=2)]

我理解mock_calls文档非常清楚:

mock_calls记录对模拟对象、其方法、魔术方法和返回值模拟的所有调用。

我想知道是否有一种优雅的方式过滤mock_calls。也有method_calls,但仍然不是它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-01 13:39:13

看起来,您正在寻找对应于每个对call()的调用的mock.get_query对象的列表。我认为mock.get_query.call_args_list会给你你想要的:

代码语言:javascript
复制
>>> 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相比较的调用列表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74266599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档