十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Free Claude Code供应商测试编写指南:tests/providers最佳实践

Free Claude Code供应商测试编写指南:tests/providers最佳实践 Free Claude Code供应商测试编写指南tests/providers最佳实践【免费下载链接】free-claude-codeUse Claude Code, Codex, Pi, and OpenCode and more for free (1.3B free tokens) from your terminal, app, IDE, or phone like OpenClaw (voice supported ToS friendly)项目地址: https://gitcode.com/GitHub_Trending/fr/free-claude-codeFree Claude Code 是一款本地代理工具让你免费使用 Claude Code、Codex、OpenCode 等编码智能体50 供应商、每月 1.3B 免费 Token。本文带你掌握它 70 多个供应商测试provider tests背后的编写套路如何离线模拟供应商 API、如何验证流式响应、如何写出快速且稳定的tests/providers测试。为什么供应商测试如此重要 FCC 的核心职责是一条翻译流水线接收 Claude 的 Messages 请求 → 转换成各供应商的 OpenAI 兼容 API 请求 → 再把流式响应翻译回 Claude 协议。每家供应商都有自己的脾气字段重映射有的要max_completion_tokens有的要max_tokens思考格式不同有的用reasoning_content字段有的用reasoning字段错误措辞各异参数不支持时返回的错误信息格式五花八门这些差异全靠 tests/providers/ 下的 70 多个测试文件钉死保证任何改动都不会悄悄破坏某家供应商的兼容性。好消息是所有测试完全离线——不需要真实 API Key、不发起真实网络请求、不受限流影响。在管理界面Admin UI中你可以配置各家供应商而它们的兼容性正是由这组测试守护的。快速上手跑通现有测试 ⚡克隆项目后一条命令即可运行全部测试uv run pytest -v --tbshort背后的关键配置在 pyproject.toml配置项作用pythonpath [src]无需安装即可导入free_claude_code包addopts -n auto启用 pytest-xdist 并行执行大幅提速filterwarnings [error]任何 Python warning 都直接判为失败倒逼代码干净testpaths [tests]只收集 tests 目录 官方建议为每个行为变更添加聚焦测试focused tests见 CONTRIBUTING.md。测试工具箱3 个关键文件写测试前先认识三个瑞士军刀文件1. tests/providers/support.py—— 供应商测试助手集make_provider_config()#L23-L50构建一个完整的、已解析的ProviderConfig带合理的超时与限流默认值immediate_admission()#L83-L98返回一个零延迟的准入控制器——重试、退避、抖动全部为 0让测试确定且飞快profiled_provider()#L101-L112一行代码构建声明式 OpenAI Chat 供应商实例capture_openai_chat_wire_body()#L53-L80用httpx2.MockTransport捕获客户端真正序列化到网络的 JSON验证最终线缆格式2. tests/providers/request_factory.py——make_messages_request()用默认值构造一个合法的 AnthropicMessagesRequest需要覆盖字段时用关键字参数即可。3. tests/conftest.py—— 全局测试环境autouse夹具把配置目录重定向到临时路径保证测试永远不会碰到你本机的真实.fcc配置或正在运行的服务器自动把 Loguru 日志桥接到 pytestcaplog方便断言日志内容编写新供应商测试的 4 个步骤 以 tests/providers/test_cerebras.py 为范本一个新供应商的测试通常长这样步骤一准备 ProviderConfig 夹具用make_provider_config组装一个假但完整的配置API Key 用占位字符串即可pytest.fixture def cerebras_config(): return make_provider_config( api_keytest_cerebras_key, base_urlCEREBRAS_DEFAULT_BASE, rate_limit10, rate_window60, )步骤二用确定性准入构建 Providerreturn profiled_provider(cerebras, cerebras_config, admissionimmediate_admission())immediate_admission把重试退避全部归零见 admission.py重试类测试可以在毫秒内跑完且结果可预测。步骤三测试请求体转换同步测试最快绝大多数差异集中在_build_request_body——把 Claude 请求转成该供应商的 OpenAI 格式。直接调用它并断言字段无需任何异步或 mock例如验证系统消息挂载、思考历史回放、max_tokens重映射#L88-L175。步骤四测试流式响应异步测试用pytest.mark.asyncio标记然后 mock 掉流式客户端让create()返回一个生成假 chunk 的协程生成器最后断言stream_messages产出的 SSE 事件里包含预期的text_delta/thinking_deltamock_chunk MagicMock(choices[MagicMock( deltaMagicMock(contentHello back!, reasoning_contentNone, tool_callsNone), finish_reasonstop)], usageMagicMock(completion_tokens5, prompt_tokens10))完整示例见 test_stream_messages_text。三种核心 Mock 技巧 ️技巧适用场景代表用例MagicMock伪造 chunk 对象验证流式事件解析test_cerebras.pyhttpx2.MockTransport拦截真实 HTTP验证序列化后的最终请求体support.py零延迟immediate_admission快速、确定地验证重试/退避策略test_failure_policy.py对于复杂场景如 Groq 的推理强度词汇协商供应商报错说reasoning_effort只接受none/default客户端要自动降级重试项目用pytest.mark.parametrize穷举各种错误报文格式见 test_groq_reasoning.py。这些客户端能选到各家免费模型底层依赖的正是每个供应商请求/响应格式的精确转换。最佳实践清单 ✅一个测试只验证一个行为命名即文档如test_build_request_body_remaps_max_tokens_preserves_message_name绝不发起真实网络请求一律用 mock transport 或 mock 客户端真实联交给 smoke 层尊重filterwarnings [error]未 await 的协程、弃用 API 都会让测试失败边界行为要专门成文参考 test_stream_recovery.py、test_openai_compat_5xx_retry.py、test_preflight_contract.py新供应商新文件遵循test_provider.py命名约定夹具命名provider_config/provider_provider进阶从单元测试到真实验证 单元测试保证格式对真实联调保证真的通。项目分了两层契约测试tests/contracts/如 test_protocol_matrix.py 校验协议矩阵、能力映射等确定性契约smoke 冒烟测试smoke/标记为live/provider的测试才会触碰真实服务且需要显式 opt-in例如 smoke/product/test_provider_product_live.py# 只跑某个供应商的单元测试 uv run pytest tests/providers/test_cerebras.py -v # 跑契约测试 uv run pytest tests/contracts/ -v总结写tests/providers测试的心法可以浓缩为一句话用support.py的工具箱构建零延迟、零网络的供应商实例然后分别对请求体转换和流式事件做精确断言。掌握这套模式你既能守护 50 供应商的兼容性也能在几秒内验证自己的改动是否安全。核心参考路径速查助手工具tests/providers/support.py、tests/providers/request_factory.py全局夹具tests/conftest.py测试配置pyproject.toml供应商源码src/free_claude_code/providers/【免费下载链接】free-claude-codeUse Claude Code, Codex, Pi, and OpenCode and more for free (1.3B free tokens) from your terminal, app, IDE, or phone like OpenClaw (voice supported ToS friendly)项目地址: https://gitcode.com/GitHub_Trending/fr/free-claude-code创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表