Prhub

#22139 Consolidate reasoning tests into test/registered/reasoning/

原始 PR 作者 hnyls2002 合并时间 2026-04-05 16:09 文件变更 5 提交数 7 评论 10 代码增减 +172 / -409

执行摘要

将推理相关测试整合到统一目录,减少 CI 服务器启动次数。

根据PR body描述,主要目标是减少CI服务器启动次数,通过整合相关测试文件并消除冗余启动,具体表述为'2 fewer server launches'。

建议阅读此PR以了解测试架构的改进模式,特别是混合类设计。重点关注review中讨论的测试覆盖和错误处理问题,作为后续测试优化的参考点。

讨论亮点

review中,gemini-code-assist[bot]指出新增的CPU单元测试'实际上未执行仓库代码',可能导致测试覆盖不足;同时建议改进reasoning_kit.py中的JSON解析逻辑,'验证数据非空以避免JSONDecodeError'。讨论凸显了测试设计的严谨性,但未形成明确结论或实施改动。

实现拆解

实现方案分五步:

1) 重命名reasoning_tokens_kit.py为reasoning_kit.py,添加SeparateReasoningMixin混合类;
2) 将test_enable_thinking.py移至test/registered/reasoning/test_reasoning.py,并集成ReasoningTokenUsageMixin和SeparateReasoningMixin;
3) 删除test_reasoning_content.py文件;
4) 新增CPU单元测试test_reasoning_content_without_parser.py,替代原GPU测试;
5) 更新test_qwen35_models.py中的导入以引用新kit。

文件 模块 状态 重要度
python/sglang/test/kits/reasoning_kit.py 测试工具 renamed 5.0
test/registered/reasoning/test_reasoning.py 推理测试 renamed 5.0
test/registered/unit/parser/test_reasoning_content_without_parser.py 解析器测试 added 4.0
test/registered/openai_server/features/test_reasoning_content.py 推理测试 removed 3.0

关键符号

SeparateReasoningMixin._openai_client SeparateReasoningMixin.test_streaming_separate_reasoning_false TestReasoningContentWithoutParser.test_no_parser_text_passthrough

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

CPU 单元测试的有效性 question

gemini-code-assist[bot] 指出测试未运行实际代码,' 验证 Python 的基本控制流而非系统逻辑 '。

结论:未解决,但提供改进建议如单元测试实际方法。 · 待处理

JSON 解析错误处理 正确性

gemini-code-assist[bot] 建议验证数据非空以避免 JSONDecodeError,提升解析鲁棒性。

结论:未实现,仅作为建议提供。 · 待处理

风险与影响

技术风险包括:

1) 测试覆盖风险:新CPU单元测试可能未有效验证代码逻辑,如test_reasoning_content_without_parser.py中硬编码逻辑;
2) 解析错误风险:reasoning_kit.py中未处理空数据行,可能引发JSONDecodeError;
3) 回归风险:由于文件移动和重构,可能导致现有测试引用断裂或行为变更。

对用户无直接影响,因为变更仅限于测试代码。对团队而言,减少CI服务器启动次数将缩短测试时间,提升开发效率。对系统,增强了测试结构的一致性和可维护性,但需监控测试覆盖率变化。

缺少测试覆盖 解析逻辑风险

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论