You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从call_args_list获取函数调用参数并访问call对象内容?

如何从call_args_list的call对象中提取参数并验证

嘿,这问题我熟!你拿到的call对象其实自带两个非常好用的属性,能直接提取调用时的参数:

  • args: 存储位置参数的元组,完全按照调用时的顺序排列
  • kwargs: 存储关键字参数的字典,键是参数名,值是对应传入的参数值

针对你的场景,call_args_list里的每个call都是位置参数调用(比如call('A', [])里第一个是位置参数'A',第二个是位置参数[]),所以直接用args就能拿到你要的内容。

具体操作代码示例

假设你的调用列表已经存在于call_list变量中:

from unittest.mock import call

# 你的调用列表
call_list = [call('A', []), call('B', []), call('C', ['err'])]

# 验证第二次调用的第二个参数无错误
second_call_second_arg = call_list[1].args[1]
# 根据你的需求,验证它是空列表或者不包含错误标识
assert second_call_second_arg == []
assert 'err' not in second_call_second_arg

# 验证第三次调用的第二个参数存在错误
third_call_second_arg = call_list[2].args[1]
assert 'err' in third_call_second_arg

额外补充:如果是关键字参数的情况

如果你的函数调用是用关键字参数传递的,比如call(name='C', errors=['err']),那你就需要用kwargs来提取:

# 提取关键字参数errors的值
third_call_error_arg = call_list[2].kwargs['errors']
assert 'err' in third_call_error_arg

这样就能精准提取每个调用的参数,完成你的验证需求啦!

内容的提问来源于stack exchange,提问作者user3802348

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:45:52