Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Mock时删除call()_Python_Mocking - Fatal编程技术网

Python 使用Mock时删除call()

Python 使用Mock时删除call(),python,mocking,Python,Mocking,在Python2.6或2.7中,我希望在使用Mock.call\u args\u列表时去掉“call”内容 我基本上想检查当一些参数出现时,mock是否被很好地调用 我有点像: a = Mock() ... self.assertEqual(a.call_args_list, ...) 但是call_args_列表如下所示: [call(arg1, arg2, arg3), call(...)] 如何在不重新创建完整调用对象的情况下精确访问arg2值 如果有一种方法可以迭代所有的“call”

在Python2.6或2.7中,我希望在使用Mock.call\u args\u列表时去掉“call”内容

我基本上想检查当一些参数出现时,mock是否被很好地调用

我有点像:

a = Mock()
...
self.assertEqual(a.call_args_list, ...)
但是call_args_列表如下所示:

[call(arg1, arg2, arg3), call(...)]
如何在不重新创建完整调用对象的情况下精确访问arg2值

如果有一种方法可以迭代所有的“call”对象,得到所有参数的列表,然后提取我需要的东西

问题是,之前我没有遇到任何问题,call_args_列表返回的列表中没有“call”的内容,我可以做我想做的事情,但由于某种原因,“call”开始出现,我不知道如何正确处理它。

您可以做:

>>> import mock
>>> my_call = mock.call('test', example=3)
>>> name, args, kwargs = my_call
>>> name
''
>>> args
('test',)
>>> kwargs
{'example': 3}
>>> args, kwargs = my_call
这将为您提供调用的名称(不总是可用)、位置参数和关键字参数。根据,
call\u args\u列表中的
call()
对象实际上是具有两个值而不是三个值的元组。因此,您可以:

>>> import mock
>>> my_call = mock.call('test', example=3)
>>> name, args, kwargs = my_call
>>> name
''
>>> args
('test',)
>>> kwargs
{'example': 3}
>>> args, kwargs = my_call
您还可以使用索引来获取值。例如,
my_call[2]
将为您提供关键字参数。这可用于将
call\u args\u list
转换为参数:

>>> call1 = mock.call('test', example=3)
>>> call2 = mock.call('test', example=4, value=5)
>>> call_args_list = [call1, call2]
>>> [(item[1], item[2]) for item in call_args_list]
[(('test',), {'example': 3}), (('test',), {'example': 4, 'value': 5})]

谢谢你的回答。对于call_args_list,[0]是arg list,[1]似乎是kwargs。2项元组和3项元组的通用变量:
args,kwargs=a.call_args[:-2]
-这里我们总是取最后2项。