python如何在MagicMock中访问输入参数?

时间:2013-04-06 15:24:23

标签: python mocking

我想为函数'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})。我怎么能这样做?

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})

希望有所帮助。