Python 使用pytest修补/取消修补装饰器

Python 使用pytest修补/取消修补装饰器,python,pytest,python-unittest,python-decorators,Python,Pytest,Python Unittest,Python Decorators,我正试着给一个装饰师打补丁。我使用的测试框架是pytest。我能够成功地修补它。但是,补丁在整个测试过程中都保持不变,因此我无法测试装饰器本身 下面是一个示例代码 decorators.py def decorator(resolver): def wrap(*args, **kwargs): kwargs.setdefault("additional_value", <some_value>) return resolve

我正试着给一个装饰师打补丁。我使用的测试框架是pytest。我能够成功地修补它。但是,补丁在整个测试过程中都保持不变,因此我无法测试装饰器本身

下面是一个示例代码

decorators.py

def decorator(resolver):
    def wrap(*args, **kwargs):
        kwargs.setdefault("additional_value", <some_value>)
        return resolver(*args, **kwargs)

    return wrap
我也尝试过停止这个补丁。但这似乎也不起作用

@pytest.fixture
def patch_reset_database_alias(request):
    decorator_patch.stop()
    importlib.reload(decorators)

    def reset_patch():
        decorator_patch.start()

    request.addfinalizer(reset_patch)
我不太清楚这里缺少了什么,我如何才能让它发挥作用

谢谢

@pytest.fixture
def patch_reset_database_alias(request):
    decorator_patch.stop()
    importlib.reload(decorators)

    def reset_patch():
        decorator_patch.start()

    request.addfinalizer(reset_patch)