2

如何使用 python mock来消除方法装饰器的行为,以便我不依赖它们来测试当前方法?

import utils
class Router(object):
    @utils.with_user
    @utils.formatted_response('resources', with_pagination=True)
    def get_resources(self, user_id=None, offset=None, limit=None):
        # do stuff
        pass

我已经尝试过:

# @patch('utils.with_tenant')
# @patch.object(utils, 'with_tenant')
def test_stub_decorator(self):
    # patch('utils.with_tenant')
    # patch.object(utils, 'with_tenant')

这些似乎都不起作用!有任何想法吗?

4

1 回答 1

1

对于模拟装饰器,您需要更早地模拟它们(在加载该模块之前):

from mock import patch
# mock the retry decorator before any module loads it
patch('utils.with_user', lambda x: x).start()
import utils  # or any module which imports utils
于 2013-07-31T01:42:43.103 回答