Я пытаюсь написать модульные тесты, чтобы убедиться в правильности написанных мной декораторов. Вот начало кода, который я пытаюсь написать:
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) не запоминает промежуточные значения, поэтому это не сработает.) Как правильно тестировать другие декораторы?