You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用pytest为函数设置执行超时,检测是否陷入无限循环?

pytest 检测函数超时(无限循环)的现成方案

直接用pytest-timeout插件就能搞定,不用自己编写线程/进程逻辑,步骤如下:

  1. 安装插件
    执行命令:
pip install pytest-timeout
  1. 两种使用方式
  • 针对单个测试用例:给目标测试函数加@pytest.mark.timeout(x)装饰器,x为允许的最大执行时长(单位秒)。示例:
import pytest
from your_module import problematic_func

@pytest.mark.timeout(5)  # 设定5秒超时阈值
def test_func_not_infinite_loop():
    problematic_func()

运行测试时,若problematic_func执行超过5秒,pytest会直接终止该用例并标记为失败,刚好匹配“超时时长判定为无限循环”的需求。

  • 全局配置所有用例:在项目根目录的pytest.ini中添加配置,让所有测试用例统一应用超时限制:
[pytest]
timeout = 5  # 全局设置5秒超时
  1. 额外说明
    pytest-timeout底层已封装线程/进程的超时控制逻辑,默认模式可覆盖绝大多数场景。如果你的函数涉及特殊IO操作或多线程场景,可通过timeout_method参数指定运行模式(比如thread或signal)。

内容的提问来源于stack exchange,提问作者Rizhiy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 18:05:01