用途:在修改源码、修复缺陷或新增功能后,快速验证改动是否破坏既有功能。该技能通过项目自带脚本智能发现受影响的测试套件,只运行必要部分,而不是整套测试。
主要能力:根据改动文件匹配测试套件并列出可用 venv(Python 版本与依赖组合);对核心/追踪类改动选择核心追踪与内部测试各一个 venv,对集成类改动只跑受影响的 contrib 套件,对纯测试改动只跑指定文件或函数,对测试基础设施改动跑冒烟套件;自动启停所需的 Docker 服务(redis、postgres 等);支持首次用 --dry-run 预览、失败时用 -vv 增加输出并聚焦单个失败用例重跑。
使用方式:先识别改动文件(git status 查看已暂存、未暂存和未跟踪文件,也可显式指定)。用 scripts/run-tests --list <edited-files> 查看匹配套件与 venv 哈希,再用 scripts/run-tests --venv <hash> 执行;也可用 scripts/run-tests --venv e06abee 直接指定。失败重跑示例:scripts/run-tests --venv <hash> -- -vv -k test_name。
适用场景:Flask/Django 等集成缺陷、核心追踪改动、测试文件修改、测试基础设施调整、迭代修复失败用例。
限制与注意:不要直接运行 pytest,应使用 scripts/run-tests 或通过 scripts/ddtest 使用 riot;迭代时先用 1-2 个 venv,避免一次跑 10 个以上;单 venv 可能耗时 5-30 分钟;部分套件需要环境变量(如 DD_TRACE_AGENT_URL);如脚本无法启动 Docker 服务,可用 docker compose ps 与 docker compose down 排查;官方测试流程以 docs/contributing-testing.rst 为准。具体支持套件与参数以实际脚本输出为准。