修补程序与装饰一个装饰

时间:2016-04-22 13:37:10

标签: python mocking decorator patch

我想要使用python模拟库修补一个在装饰器内部调用的函数。我无法修补它,导致原始函数被调用。它可能与名称空间有关,但我不清楚我应该使用什么作为函数名称,补丁装饰器的第一个参数。

我所拥有的是以下内容:

def is_always_running_on_Windows_64bit_mode():
    return True

class ToolsTests(BaseTestCase):
    @patch('tools.is_running_on_Windows_64bit_mode', is_always_running_on_Windows_64bit_mode)
    @parameters()
    def test_benchmarks_in_x86_not_x64_folder(self):
        ... 
        #do some testing where the test decorator parameters should believe we're in 64 bit mode 
        ...

BaseTestCase派生自unittest.TestCase,并在其他模块中定义。 在同一个模块中,我有装饰器本身:

def parameters(*parameters):
    def decorator(method, parameters=parameters):
        if tools.is_running_on_Windows_64bit_mode():
            regressions_folder = "Regressions_x64"
        else:
            regressions_folder = "Regressions"
        # etc etc
    return decorator

问题是调用tools.is_running_on_Windows_64bit_mode,而不是我自己的is_always_running_on_Windows_64bit_mode。

寻找答案有点困难,因为它有关于装饰装饰的问题,如果已经有装饰,我很抱歉创建了一个多余的问题。

0 个答案:

没有答案