我是单元测试的新手。任何人都可以指导我用模拟和补丁测试这个装饰
showinfo=0
答案 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看起来像一个方法,因为它有一个自我参数,但我把它当作一个函数。