首页 > 解决方案 > 使用 pytest 修补/取消修补装饰器

问题描述

我正在尝试修补装饰器。我使用的测试框架是 pytest。我能够成功修补它。但是,补丁在整个测试过程中仍然存在,因此我无法测试装​​饰器本身。

这是一个示例代码

装饰器.py

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

    return wrap

修补装饰器

patch('decorators.decorator', decorator_mock).start()

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

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

    def reset_patch():
        decorator_patch.start()

    request.addfinalizer(reset_patch)

我不太确定这里缺少什么,以及如何使它工作。

谢谢

标签: pythonpytestpython-unittestpython-decorators

解决方案


推荐阅读