selenium case报错重新执行

在做web ui自动化的过程中,经常发现这样一种情况,执行时case报错啦,再重新执行一遍又成功了。

如果不解决这个问题,脚本稳定性就会变差,很让人蛋疼,怎么解决呢:

思路:

      写一个装饰器,装饰在case方法上,case一但出错就抛出错误。能过装饰器去捕获,来控制重新执行case。

 

代码:

def replayCaseFail(num=3):
    def _warpper(func):
        def warpper(*args,**kwargs):
            raise_info = None
            rnum = 0
            for i in range(num):
                rnum +=1
                try:
                    ret = func(*args,**kwargs)
                    if rnum > 1:
                        print('重试{}次成功'.format(rnum))
                    return ret
                except Exception as ex:
                    raise_info = ex
            print('重试{}次,全部失败'.format(rnum))
            raise raise_info
        return warpper
    return _warpper

 

以上代码,经实际使用没有问题,也可以结合着unittest使用,或者ddt驱动装饰器使用,但要注意位置。

要放在最底层的,最靠近函数的位置。否则其它装饰器有可能会报错。

 

示例代码:

    @unittest.skipIf(getRunFlag('CHARGE', 'testCase2') == 'N', '验证执行配置')
    @ddt.data(*FillData)
    @replayCaseFail(num=3) #case执行失败后,重新执行num次
    def testCase2(self,data):
        """储值并补开发票"""

        # 调用储值功能函数
        self.chargeFunc(data)

        """补开发票"""
        #单击 补开发票按钮
        self.charge.clickFillReceipt
        #获取 未开票金额
        notFillPresent = self.charge.getNotFillPresent(data['txtName'])
        #输入 开票金额
        self.charge.inputFillPresent(notFillPresent)
        #单击 确定 开发票
        self.charge.clickFillConfirmBtn

 

转载于:https://www.cnblogs.com/yhleng/p/9592509.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值