我想写单元测试,以确保我写的各种装饰器的正确性。下面的代码中,我试图写的开头:如何测试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)不会记忆中间值,所以不起作用。)测试其他装饰器的正确方法是什么?
啊,对。不知道为什么它没有跨过我的脑海,不使用任何斐波那契数字。 –
当您完成后,我会很乐意看到您的MRU代码。希望你会发布一个链接。 –
当然!我的memoizer的代码是在这里:https://github.com/Ceasar/memoizer 编辑:我认为我的mru.py实际上应该被称为lru.py –