PyTest之用例超时强制退出
一、脚本中设置超时退出
由于某些测试用例步骤长,执行时间比较久,为了防止程序长时间处于等待状态,浪费宝贵时间。为此,我们可以设置一个超时时间,当测试在指定的时间长度内没有完成(即使程序并没有“僵死”,只是处理得比较慢),测试会被强行终止。再此,需要安装一个插件pytest-timeout
。如下:
pip install pytest-timeout
比如,下例中设计的用例超过2秒时,就不再等待,并停止执行。
#test_timeout.py
import time
import pytest
class TestMyCode:
@pytest.mark.timeout(4)
def test_timeout_001(self):
"""正常执行,并通过"""
time.sleep(3)
assert 1 == 1
@pytest.mark.timeout(2)
def test_timeout_002(self):
"""超时,强制报错"""
time.sleep(3)
assert 1 == 1
def test_timeout_003(self):
"""正常执行,并通过"""
assert 1 == 1
if __name__ == '__main__':
pytest.main(["-s", "test_timeout.py"])
结果:
二、jenkins中设置超时退出
另外,在jenkins中也可以设置超时停止任务,如图: