Python中的部分函数异常重试

整个测试用例执行失败,可以用python自带的包实现。那么如果用例中部分函数执行失败,如何重试执行失败的函数?下面来说说这种情况:

场景:请求一个接口,在接口返回数据后提取里面的batchNo。但是因为数据延迟的原因,请求接口后,可能还没有batchNo生成,再过几秒才会生成batchNo。如何保证用例执行的可以获取到batchNo。

处理方式一:使用time.sleep(),再请求接口前设置强制等待时间,这种不能保证百分之百成功,没有异常重试;

处理方式二:使用retrying。retrying是一个 Python的重试包,可以用来自动重试一些可能运行失败的程序段。这种可以设置最大重试次数,在时间和次数足够大的情况下,能保证成功率。

导包:from retrying import retry
def retry_if_none(execption):
        return isinstance(execption,IndexError)

   @retry(retry_on_exception=retry_if_none,stop_max_attempt_number=7,wait_fixed=20000)
    def test():
        
        # 发送请求
        response = requests.request()
        r = response.json()
        while True:
            try:
                # 获取后面接口需要的batchNo
                batchNo = r['data']['pageData'][0]['batchNo']
            except:
                raise IndexError
            else:
                break

将执行中的异常与已经定义的异常对比,如果相同则继续重试。stop_max_attempt_number设置最大重试次数。wait_fixed设置重试间隔,单位为毫秒。

但是以上仅适合在单线程程序中使用,如果请求和提取分开的情况下,就没办法实现了。请求和提取分开的情况下的处理情况,后续找到方法再分享。

参考文档:Python中异常重试的解决方案详解 - 走看看 (zoukankan.com)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值