Cea*_*sta 13 python unit-testing decorator
我正在尝试编写单元测试以确保我编写的各种装饰器的正确性.这是我正在尝试编写的代码的开头:
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()
Run Code Online (Sandbox Code Playgroud)
虽然这对我上面提到的MRU策略很有效,但我计划编写其他策略,在这种情况下我需要以不同的方式用fib函数进行装饰.(回想一下,因为fib调用fib,设置fib2 = memoize(fib)不会记忆中间值,因此不起作用.)测试其他装饰器的正确方法是什么?
Ray*_*ger 11
请查看标准库中的测试示例:http: //hg.python.org/cpython/file/3.2/Lib/test/test_functools.py#l553
我通常会为被包装的函数添加一些检测,以便我可以监视调用.
相反,在模块级memoizing的测试功能,我创建了memoized函数内部测试,这样一个新的为每个测试和每个装饰变种产生.
| 归档时间: |
|
| 查看次数: |
11563 次 |
| 最近记录: |