这个问题遵循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以使输入列表包含特定值?
答案 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