Prhub

#2779 test(dsv4): accept ValueError from reasoning-effort validation

原始 PR 作者 Zhichenzzz 合并时间 2026-08-27 14:53 文件变更 1 提交数 1 评论 0 代码增减 +4 / -2

执行摘要

测试适配 sglang 新异常类型

CI 的 stage-a-cpu 运行在 test_reasoning_effort_invalid_value_raises 上失败,因为 sglang 修改了 reasoning-effort 校验方式:从 assert 改为抛出 ValueError('Invalid reasoning effort ... expected one of [high, max]'),而测试固定使用 pytest.raises(AssertionError)。该问题在 PR #2777 的 CI 运行中暴露,但与 #2777 的改动无关。

此 PR 值得快速浏览,但无需精读。它展示了处理依赖库升级导致的测试兼容性问题的最佳实践:通过匹配错误消息而非异常类型,使测试对依赖版本变化更具鲁棒性。

讨论亮点

无 review 评论,仅有 claude[bot] 的自动提示和 guapisolo 的批准。

实现拆解

仅修改单个测试文件 tests/fast/utils/chat_template_utils/test_deepseek_v4.py。核心改动是:

  1. 将 pytest.raises(AssertionError) 改为 pytest.raises((AssertionError, ValueError), match="Invalid reasoning effort"),同时接受两种异常类型。
  2. 更新注释,说明 sglang 不同版本的行为差异(旧版 assert,新版 ValueError),并强调通过消息匹配而非异常类型来追踪校验逻辑。
  3. 无配置、部署或 schema 变更,属于纯测试适配。
文件 模块 状态 重要度
tests/fast/utils/chat_template_utils/test_deepseek_v4.py 测试 modified 3.55

关键符号

test_reasoning_effort_invalid_value_raises

关键源码片段

tests/fast/utils/chat_template_utils/test_deepseek_v4.py test-coverage

核心测试文件,修改了 reasoning-effort 校验的异常断言,使测试兼容不同 sglang 版本。

# tests/fast/utils/chat_template_utils/test_deepseek_v4.pydef test_reasoning_effort_invalid_value_raises():
    # Value-level validation is delegated to sglang; depending on the sglang
    # version it asserts the allowed set or raises ValueError. Both carry the
    # same "Invalid reasoning effort" message.
    # 这里通过消息匹配而不是固定异常类型,使测试对 sglang 版本变化更健壮。
    with pytest.raises((AssertionError, ValueError), match="Invalid reasoning effort"):
        deepseek.V4.render_messages(_MSGS_BASIC, thinking_mode="thinking", reasoning_effort="ultra")

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险极低。仅修改测试断言,不影响生产代码。潜在小风险:如果 sglang 未来移除 ValueError 或改变消息文本,测试会失败;但当前匹配消息的方式已足够健壮。

影响范围为 CI 稳定性。修复后,即使 sglang 升级,相关测试也不会因异常类型变化而误报失败,确保测试覆盖有效。对用户无直接影响,主要受益者是 CI 流程和后续 PR 的验证效率。

依赖版本兼容性

关联 Issue

#2777 Qwen3.8-Flash-Next RL training support

完整报告

参与讨论