我有一个装饰器的功能,我正在尝试借助Python Mock库进行测试.我想使用mock.patch将模拟'旁路'装饰器替换为真正的装饰器,它只调用该函数.我无法弄清楚的是如何在真正的装饰器包装函数之前应用补丁.我已经在补丁目标上尝试了一些不同的变体,并重新排序补丁和导入语句,但没有成功.有任何想法吗?
有一个由装饰器包装的函数,它将函数的输出作为HTML返回.我想在没有装饰器的HTML包装的情况下调用该函数.这甚至可能吗?
例:
class a:
@HTMLwrapper
def returnStuff(input):
return awesome_dict
def callStuff():
# here I want to call returnStuff without the @HTMLwrapper,
# i just want the awesome dict.
Run Code Online (Sandbox Code Playgroud) def log(func):
def wraper(*a, **kw):
return func(*a, **kw)
return wraper
@log
def f():
print 'f'
print locals()['f'] # - prints <function wraper at 0x00CBF3F0>.
Run Code Online (Sandbox Code Playgroud)
你如何获得真正的f对象(不是装饰器包装)?