Как тестировать декораторы функций Python?

Я пытаюсь написать модульные тесты, чтобы убедиться в правильности написанных мной декораторов. Вот начало кода, который я пытаюсь написать:

import unittest

from memoizer import Memoizer
from strategies.mru import MRU


@Memoizer(strategy=MRU(maxsize=10))
def fib(x):
  if x < 2:
    return 1
  else:
    return fib(x-1) + fib(x-2)


class TestMemoizer(unittest.TestCase):

  def test_simple(self):
    self.assertEqual(fib(0), 1)
    self.assertEqual(fib(1), 1)
    self.assertEqual(fib(10), 89)


if __name__ == '__main__':
  unittest.main()

Хотя это неплохо работает для стратегии MRU, которую я описал выше, я планирую написать дополнительные стратегии, и в этом случае мне нужно будет украсить функцию fib в разных способами. (Напомним, что поскольку fib вызывает fib, установка fib2 = memoize (fib) не запоминает промежуточные значения, поэтому это не сработает.) Как правильно тестировать другие декораторы?

13
задан Ceasar Bautista 2 November 2011 в 16:19
поделиться