Python断言重复

时间:2018-09-07 18:21:47

标签: python python-2.7 assert

我正在尝试使用创建某种自动化套件。我正在尝试编写的产品套件通过网络接口进行通信。我正在使用类似的断言语句

assert A == B

我要解决的主要问题是:

B花费不同的时间量才能达到所需的值(例如:有时2秒,有时5秒)

是否可以实现断言语句,该断言语句将给定条件延迟执行一定次数然后断言?

assert A == B, 5, 5.0, "Still it failed"

以上语句的意思是:“尝试A == B 5次,每次迭代之间有5.0秒的延迟,如果仍然失败,则在此之后发出给定的错误。”

2 个答案:

答案 0 :(得分:1)

否,但是您可以编写一个执行相同操作的循环。

import time
failed = True
i = 0

while i < 5 and failed:
    failed = (A == B)
    time.sleep(5.0)

assert not failed, "Still it failed"

将其包装到函数中以提高可读性...

答案 1 :(得分:1)

要获得更好,更易读的代码,可以在内部函数上使用retry装饰器。执行pip install retry安装retry模块

from retry import retry

def test_abc():
    # <my test code>

    @retry(AssertionError, tries=5, delay=5.0)
    def _check_something():
        assert A == B, "Still failing even after 5 tries"

    # Validate
    _check_something()