gpt4 book ai didi

python - 如何测试 Python 函数装饰器?

转载 作者:太空狗 更新时间:2023-10-29 17:32:11 25 4
gpt4 key购买 nike

我正在尝试编写单元测试以确保我编写的各种装饰器的正确性。这是我要编写的代码的开头:

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) 不会内存中间值,因此不会起作用。)测试其他装饰器的正确方法是什么?

最佳答案

查看标准库中的测试示例:http://hg.python.org/cpython/file/3.2/Lib/test/test_functools.py#l553

我通常会向被包装的函数添加一些检测,以便我可以监控调用。

我没有在模块级别内存测试函数,而是在测试内部创建内存函数,以便为每个测试和每个装饰器变体创建一个新函数。

关于python - 如何测试 Python 函数装饰器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7983709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com