python 重试神器Tenacity

2643 篇文章 26 订阅
2641 篇文章 15 订阅

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)_软件测试刷题小程序-CSDN博客文章浏览阅读2.9k次,点赞85次,收藏12次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、app自动化测试、接口测试、性能测试、自动化测试、安全测试及一些常问到的人力资源题目。最主要的是他还收集了像阿里、华为这样的大厂面试真题,还有互动交流板块……_软件测试刷题小程序https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502写自动化脚本代码的同学都知道经常会遇到自动化脚本莫名其妙失败的情况,如何让脚本在失败后重试?

今天就来学习重试机制神器--- Tenacity。

Tenacity 是一个 Python 第三方库,实现了几乎所有可以使用到的重试场景。Tenacity 重试机制的常见场景如下:

• 无条件重试,重试之间无间隔:在这种情况下,Tenacity 会一直重试,直到操作成功。代码示例如下:

from tenacity import retry
@retry
def test_retry():
    print("等待重试,重试无间隔执行...")

• 重试指定的次数之后停止:Tenacity 可以在指定的次数后停止重试。代码示例如下:

from tenacity import retry, stop_after_attempt
@retry(stop=stop_after_attempt(7))
def stop_after_7_attempts():
    print(" Stopping after 7 attempts")
    raise Exception

• 重试指定的一段时间:Tenacity 可以在指定的一段时间后停止重试。代码示例如下:

from tenacity import retry, stop_after_delay
@retry(stop=stop_after_delay(10))
def stop_after_10_s():
    print(" Stopping after 10 seconds")
    raise Exception​

• 条件组合重试:Tenacity 可以根据多个条件来决定是否停止重试。代码示例如下:

#from tenacity import retry, stop_after_delay, stop_after_attempt
@retry(stop=(stop_after_delay(10) | stop_after_attempt(5)))
def stop_after_10_s_or_5_retries():
   print(" Stopping after 10 seconds or 5 retries")
    raise Exception

• 指定的时间间隔重试:Tenacity 可以在指定的时间间隔后重试。代码示例如下:

#接收一个参数 log_file,表示日志文件的路径
from tenacity import retry, wait_fixed
@retry(wait=wait_fixed(2))
def wait_2_s():
    print(" Wait 2 second between retries")
    raise Exception

• 随机的时间间隔重试:Tenacity 可以在指定的随机时间间隔后重试。代码示例如下:

from tenacity import retry, wait_random
@retry(wait=wait_random(min=1, max=2))
def wait_random_1_to_2_s():
   print(" Randomly wait 1 to 2 seconds between retries")
    raise Exception

• 指数级的间隔等待:Tenacity 可以在指数级的时间间隔后重试,通常用于分布式服务中。代码示例如下:

from tenacity import retry, wait_exponential
@retry(wait=wait_exponential(multiplier=1, min=4, max=10))
def wait_exponential_1():
    print(" Wait 2^x *1 second between each retry starting with 4 seconds, then up to 10 seconds, then 10 seconds afterwards")
    raise Exception

• 固定的时间间隔加上随机的时间间隔:Tenacity 可以在固定时间间隔的基础上添加随机时间间隔。代码示例如下:

from tenacity import retry, wait_fixed, wait_random
@retry(wait=wait_fixed(3) + wait_random(0,2))
def wait_fixed_jitter():
    print(" Wait at least 3 seconds, and add up to 2 seconds of random delay")
    raise Exception

• 遇到指定的 ERROR 重试:Tenacity 可以在遇到指定的错误时重试。代码示例如下:

from tenacity import retry, retry_if_exception_type
def is_none_p(value):
    return value is None
@retry(retry=(retry_if_result(is_none_p) | retry_if_exception_type()))
def might_return_none():
   print(" Retry forever ignoring Exceptions with no wait if return value is None")

• 自定义校验返回值重试:可以使用装饰器 retry_if_result 来自定义返回值的校验函数,根据校验结果决定是否重试。代码示例如下:

from tenacity import retry, retry_if_exception_type
def is_none_p(value):
    return value is None
@retry(retry=(retry_if_result(is_none_p) | retry_if_exception_type(IOError)))
def might_return_none():
print(" Retry forever ignoring Exceptions with no wait if return value is None")

在实际应用中,你可以根据具体的需求选择合适的重试策略。同时,你还可以通过设置 retry 装饰器的参数来自定义重试的行为,例如设置最大重试次数、重试间隔时间等。

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 759968159,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值