如何在Python中Patch @backoff装饰器,调整测试重试次数
解决测试时修改backoff重试次数的方案
这里提供两种可行的方法,无需修改业务代码即可在测试my_method时将重试次数改为2次:
方法一:Patch装饰器参数(提前控制装饰器行为)
通过unittest.mock.patch替换backoff.on_exception,强制使用max_tries=2。注意必须在patch生效后再导入目标类,确保装饰器应用时使用mock后的配置:
from unittest.mock import patch import backoff def test_my_method_retry_limit(): # 定义mock装饰器,覆盖max_tries参数 def mock_on_exception(wait_gen, exception, **kwargs): kwargs['max_tries'] = 2 return backoff.on_exception(wait_gen, exception, **kwargs) with patch('backoff.on_exception', side_effect=mock_on_exception): # 在此处导入MyClass,确保装饰器应用mock后的逻辑 from your_module import MyClass obj = MyClass() # 执行测试逻辑 obj.my_method()
方法二:直接修改已装饰方法的配置(更直接)
backoff装饰后的方法会带有_backoff属性,存储重试的核心配置。可以直接修改这个属性的参数:
from your_module import MyClass def test_my_method_retry_limit(): obj = MyClass() # 直接覆盖max_tries为2 obj.my_method._backoff.max_tries = 2 # 执行测试 obj.my_method()
内容的提问来源于stack exchange,提问作者chrismint
相关产品推荐
相关产品推荐

