我想要使用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。
寻找答案有点困难,因为它有关于装饰装饰的问题,如果已经有装饰,我很抱歉创建了一个多余的问题。