0

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

4

1 回答 1

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

希望有帮助。

于 2013-04-06T22:21:26.787 回答