Python:断言对包含变量的列表的调用

时间:2015-03-12 18:48:31

标签: python unit-testing mocking

这个问题遵循python 2.7.3语法。在unittest框架中,假设我有以下设置:

import mock;
my_mock = mock.Mock();
my_patch = mock.patch("my_method", my_mock);

现在假设my_method将list参数作为输入。

如何使用my_mock.assert_any_call确保调用my_method以使输入列表包含特定值?

1 个答案:

答案 0 :(得分:1)

您可以同时使用mock_calls并按照文档here调用解包。现在一个for循环足以完成这项工作:

>>> import mock
>>> m = mock.Mock()
>>> m([1,2])
<Mock name='mock()' id='140596484020816'>
>>> m([5,6])
<Mock name='mock()' id='140596484020816'>
>>> m([8,9])
<Mock name='mock()' id='140596484020816'>
>>> for name,args,kwrgs in m.mock_calls:
...     if 5 in args[0]:
...         print("found")
... 
found