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 またはその他のツールを使用して update メソッドをモックし、受け取った最初のパラメーターを返すことです (この場合、{'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 に答える