Tôi đang cố gắng viết các bài kiểm tra đơn vị để đảm bảo tính chính xác của các trang trí khác nhau mà tôi đã viết. Đây là sự khởi đầu của mã tôi đang cố gắng viết:Làm thế nào để kiểm tra trang trí hàm 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()
Trong khi điều này làm việc cho chiến lược MRU tôi đã nêu ở trên, tôi sẽ cần phải trang trí thêm chức năng fib theo nhiều cách khác nhau. (Nhớ lại rằng bởi vì fib gọi fib, thiết lập fib2 = memoize (fib) không ghi nhớ các giá trị trung gian để nó không hoạt động.) Cách chính xác để kiểm tra các trang trí khác là gì?
Ah, phải. Không chắc chắn lý do tại sao nó không vượt qua tâm trí của tôi không sử dụng bất cứ điều gì sau đó mã số. –
Tôi rất muốn xem mã MRU của bạn khi bạn hoàn tất. Hy vọng rằng, bạn sẽ đăng một liên kết. –
Chắc chắn! Mã cho memoizer của tôi là ở đây: https://github.com/Ceasar/memoizer EDIT: Tôi nghĩ mru.py của tôi nên thực sự được gọi là lru.py –