美文网首页
用Tenacity提高自动化测试工具的健壮性

用Tenacity提高自动化测试工具的健壮性

作者: 旺福君 | 来源:发表于2018-01-01 20:55 被阅读0次

在自动化测试工具和自动化测试用例开发过程中,经常需要处理一些待操作对象不稳定的情况,例如,某些界面元素不能及时出现,某些服务暂时不可用。这个时候,测试代码必须想方设法应对这种情况,以便提高工具和用例的健壮性,最常见的解决方法就是进行重试:当特定条件不满足的时候,等待一段时间,然后再次尝试,直到期望的条件满足继续运行,或者重试到达一定数目抛出异常退出。

下面是一种常用的重试代码样板.

def do_something_unreliable(retry=10):
    for i in range(retry):
        try:
            if random.randint(0, 10) > 1:
                raise IOError("Unstable status, try again")
            else:
                print("Get stable result")
                return
        except Exception as e:
            print(e.message)

其实,已经有高人开发了一个名叫Tenacity的Python库,帮我们优雅地搞定这些需要重试的情况了,使用起来非常简单。

我们可以用pip install tenacity来安装这个库,然后用@retry装饰器来重构上面的代码。

from tenacity import retry
@retry
def do_something_unreliable():
    if random.randint(0, 10) > 1:
        raise IOError("Unstable status, try again")
    else:
        print("Get stable result")
        return

上面的例子,实现了遇到异常就重试,如果想要限制重试次数,只需要修改@retry装饰器那一行即可。

from tenacity import retry, stop_after_attempt

@retry(stop=stop_after_attempt(3))

如果想要每5秒钟重试一次

from tenacity import retry, wait_fixed

@retry(wait=wait_fixed(5))

上面这些,仅仅是tenacity最简单的使用方法,其他重试的方式还有很多种,大家可以访问 http://tenacity.readthedocs.io/en/latest/ 找到更多的使用方法。

当然,看到好东西,就应该把它用起来,今天我已经把常用的多节点存活状态采集的自动化工具用tenacity改进了一版,以前必须要用较长的超时机制(requests的timeout参数)来对抗网络异常,现在只新加两行代码,就大大缩短了统计时间,增强了健壮性,优雅地不得了。

对了,本文的例子,大家可以访问github获得。

https://github.com/jumper2014/Asgard/tree/master/samples/tenacity_sample

相关文章

  • 用Tenacity提高自动化测试工具的健壮性

    在自动化测试工具和自动化测试用例开发过程中,经常需要处理一些待操作对象不稳定的情况,例如,某些界面元素不能及时出现...

  • 微服务自动化测试

    自动化测试重要性 微服务大部分时候是敏捷开发的前置条件; 微服务之间需要减少接口变化,提高接口健壮性; 自动化测试...

  • 泽众自动化测试工具AutoRunner好用吗?

    AutoRunner是黑盒测试工具,可以用来完成功能测试、回归测试,可以提高测试效率,降低测试人工成本。 自动化测...

  • 自动化测试工具

    Web自动化测试工具:selenium、QTP。性能自动化测试工具:loadrunner、jmeter。接口自动化...

  • 关键字驱动自动化测试

    第一章 前言 为 了提高测试效率和准确性,越来越多的测试工作引入了自动化测试的思想和方法,随着自动化测试工具的发展...

  • Jmeter的接口测试

    接口测试工具 手工测试的话可以用postman ,自动化测试多是用到 Jmeter(开源),soupUI(开源&商...

  • iOS中单元测试和UI测试教程2019-12——Xcode10.

    单元测试的目的 提高开发效率提高代码的健壮性保证程序的正常运行(不包括发现bug) 系统测试的几个方法说明 测试的...

  • 常用自动化测试工具分享

    常见自动化测试工具分享 一 Appium AppUI自动化测试 Appium 是一个移动端自动化测试开源工具,支持...

  • 自动化测试-1

    如何做自动化测试 会使用自动化工具不能称为自动化测试人员,只能称为“工具小子” 能独立编写测试脚本,能开发一些测试...

  • Selenium

    Selenium Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用...

网友评论

      本文标题:用Tenacity提高自动化测试工具的健壮性

      本文链接:https://www.haomeiwen.com/subject/yjcxnxtx.html