我想为函数'method_a'添加单元测试:
def method_a(some_thing):
#some logic here
return update({'a':1}, request=some_thing)
def update(value, request):
if request:
return value.update({'b':2})
return value.update({'c':3})
其实我并不关心更新方法的逻辑。我想要做的就是使用MagicMock或任何工具来模拟更新方法,让它返回它收到的第一个参数(在这种情况下,应该返回{'a':1})。我怎么能这样做?
答案 0 :(得分:2)
您可以使用patch
功能。这是一个例子:
from unittest import TestCase
from mock import patch
def method_a(some_thing):
#some logic here
return update({'a': 1}, request=some_thing)
def update(value, request):
if request:
return value.update({'b': 2})
return value.update({'c': 3})
class TestMethodA(TestCase):
def test_mocked_update(self):
with patch('%s.update' % __name__, lambda value, request: value):
self.assertEqual(method_a('test'), {'a': 1})
希望有所帮助。