如何从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
相关产品推荐
相关产品推荐

