当前位置:  开发笔记 > 编程语言 > 正文

如何在python中模拟/修补装饰器?

如何解决《如何在python中模拟/修补装饰器?》经验,为你挑选了0个好方法。

解决方法:

我无法修补装饰器,但仍然可以访问包装的函数。但是我要测试包装在装饰器中的函数的解决方法如下:

def un_some_method(self):
...

some_method = some_var.some_decorator('somestring')(un_some_method)    

这仍然修饰了我的功能,但是如果我想对其进行测试,可以在其他地方重用它,则可以访问该功能。

这就是问题:

我有一个模块,其中有一个类,以及实例化暴露装饰器的类的变量。

然后在模块内部的类中,将该变量与类的实例一起使用,并在类中装饰一个方法。要清楚,让我们看一些代码:

some_var = ClassX()

class SomeClass(object):

    @some_var.some_decorator('somestring')
    def some_method(self):
        ...

在我的测试中,我想测试其中的代码,some_method并且我不在乎装饰器...尽管我尝试模拟装饰器是没有用的...以下是我尝试过的一些事情:

@patch('path_to_classx.ClassX.some_decorator')
@patch('path_to_someclassmodule.some_var')
@patch('path_to_someclassmodule.ClassX')

上面的尝试都没有阻止功能的修饰...知道为什么吗?

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有