Sto provando a scrivere test unitari per garantire la correttezza dei vari decoratori che ho scritto. Ecco l'inizio del codice che sto cercando di scrivere:Come testare i decoratori di funzioni 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()
Anche se questo funziona decentemente per la strategia MRU che ho sopra, ho intenzione di scrivere ulteriori strategie, nel qual caso avrò bisogno di decorare con la funzione fib in diversi modi. (Ricorda che poiché fib chiama fib, l'impostazione fib2 = memoize (fib) non memorizza i valori intermedi in modo che non funzioni.) Qual è il modo corretto di testare gli altri decoratori?
Ah, giusto. Non sono sicuro del motivo per cui non mi è venuto in mente di non usare nulla quindi i numeri di Fibonacci. –
Sarei interessato a vedere il codice MRU quando hai finito. Spero che pubblichi un link. –
Sicuro! Il codice per il mio memoizer è qui: https://github.com/Ceasar/memoizer EDIT: Penso che il mio mru.py dovrebbe in realtà essere chiamato lru.py –