我有一个课程MyClass
和两个职能my_function
和my_other_function
。 my_other_function
来电my_function
。我想测试my_other_function
并模拟my_function
。问题是,my_function
将MyClass
的实例作为其参数,并访问它的foo
属性。 my_other_function
会更改foo
属性。我想测试对模拟my_function
的调用使用正确的参数,这涉及确保foo
实例的MyClass
属性每次都是正确的。我不知道该怎么做,因为当我访问模拟的call_args_list
属性时,该类已被修改,我只能看到它最近的状态
import mock
class MyClass(object):
def __init__(self):
self.foo = 'a'
def my_function(instance):
print instance.foo
def my_other_function():
myinstance = MyClass()
for i in ['a','b','c']:
myinstance.foo = i
my_function(myinstance)
def test_my_other_function():
with mock.patch(__name__+'.my_function') as mock_function:
my_other_function()
mock_function.call_args_list
# Test that the instance passed to my_function had the correct foo attribute each time
calls_args_list
中的每次通话都会显示myinstance
的最新状态,其中foo
为' c'