48

我目前正在运行一些单元测试,这些单元测试可能需要很长时间才能失败或无限期运行。在成功的测试运行中,它们总是会在一定时间内完成。

是否可以创建一个 pytest 单元测试,如果它没有在一定时间内完成,它将失败?

4

2 回答 2

73

您可以安装 pytest-timeout 插件,然后在几秒钟内将您的测试功能标记为超时。

@pytest.mark.timeout(300)
def test_foo():
   pass

在https://pypi.python.org/pypi/pytest-timeout查看插件下载和使用说明

于 2013-10-22T20:17:13.967 回答
1

可以使用 Bash 功能:

EXIT_CODE=0
TIME_LIMIT=60

timeout $TIME_LIMIT pytest ... || EXIT_CODE=$?

if [ $EXIT_CODE -ne 0 ]; then
    
    echo "Your error message to log"
    
    ...
    
    exit $EXIT_CODE
    
fi

于 2021-10-11T13:26:36.620 回答