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中也可以设置超时停止任务,如图:

posted @ 2021-09-29 17:33  xyztank  阅读(1100)  评论(0编辑  收藏  举报