假设我有以下内容:
def with_connection(f):
def decorated(*args, **kwargs):
f(get_connection(...), *args, **kwargs)
return decorated
@with_connection
def spam(connection):
# Do something
我想测试 spam
函数,而无需经历设置连接(或装饰器正在做的任何事情)的麻烦。
鉴于 spam
,我如何从中剥离装饰器并获得底层的“未装饰”功能?
原文由 Herge 发布,翻译遵循 CC BY-SA 4.0 许可协议
在一般情况下,你不能,因为
相当于
这意味着“原始”垃圾邮件甚至可能不再存在。一个(不太漂亮的)hack 是这样的: