我正在尝试使用pytest创建某种自动化套件。我正在尝试编写的产品套件通过网络接口进行通信。我正在使用类似的断言语句
assert A == B
我要解决的主要问题是:
B花费不同的时间量才能达到所需的值(例如:有时2秒,有时5秒)
是否可以实现断言语句,该断言语句将给定条件延迟执行一定次数然后断言?
assert A == B, 5, 5.0, "Still it failed"
以上语句的意思是:“尝试A == B
5次,每次迭代之间有5.0秒的延迟,如果仍然失败,则在此之后发出给定的错误。”
答案 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()