:
from mock import Mock, MagicMock, patch
sep = '***********************\n'
def get_a():
return A()
def extern_func():
return 'foo'
def do_stuff(self):
a = get_a()
while True:
a.update()
print a.state
if a.state == 'state':
break
class A(object):
def __init__(self):
self.state = ''
def update(self):
self.state = extern_func()
@Simeon Viser, extern_func:
print sep, 'patch extern'
mock = MagicMock(side_effect = [1,2,3,4, 'state'])
@patch('__main__.extern_func', mock)
def foo():
do_stuff(3)
foo()
>>>
***********************
patch extern
1
2
3
4
state
side_effect , A.update auto_spec = True.
:
print sep, 'patch update context manager call do_stuff'
def update_mock(self):
self.state = mock()
mock = MagicMock(side_effect = [1,2,3,4, 'state'])
with patch.object(A, 'update', autospec = True) as mock_update:
mock_update.side_effect = update_mock
do_stuff(3)
>>>
***********************
patch update context manager call do_stuff
1
2
3
4
state
:
print sep, 'patch update decorator test_do_stuff'
def update_mock(self):
self.state = mock()
mock = MagicMock(side_effect = [1,2,3,4, 'state'])
@patch.object(A, 'update', autospec = True, side_effect = update_mock)
def test_do_stuff(self):
do_stuff(3)
test_do_stuff()
>>>
***********************
patch update decorator test_do_stuff
1
2
3
4
state
: , , , , , . Edits .