如何测试装饰器?

时间:2017-10-25 20:28:19

标签: python

我是单元测试的新手。任何人都可以指导我用模拟和补丁测试这个装饰

showinfo=0

1 个答案:

答案 0 :(得分:1)

您可以通过将装饰器应用于测试功能来测试装饰器。然后运行修饰函数并检查行为。

在这种情况下,修饰函数是一个内部函数,因此如果需要,它可以访问测试方法的self等。

class TestFetchEntityFromES(TestCase):

    def test_fetch_entity_from_ES(self):

        @fetch_entity_from_ES
        def foo(entity_type, entity_id):
            return 'bar'

        with patch.object(ElasticSearchUtilities, 'fetch_entity_from_ES',
                          return_value=None):
            self.assertEqual(foo('type1', 'id1'), 'bar')
        with patch.object(ElasticSearchUtilities, 'fetch_entity_from_ES',
                          return_value='baz'):
            self.assertEqual(foo('type1', 'id1'), 'baz')

BTW,fetch_entity_from_ES看起来像一个方法,因为它有一个自我参数,但我把它当作一个函数。