我想寫單元測試,以確保我寫的各種裝飾器的正確性。下面的代碼中,我試圖寫的開頭:如何測試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 –