资讯动态

CrewAI 单元测试:从第一个可运行用例到失败排查

发布时间:2026/8/30 14:42:03 来源:尧图企业网站定制
CrewAI 单元测试从第一个可运行用例到失败排查【免费下载链接】crewAIFramework for orchestrating role-playing, autonomous AI agents. By fostering collaborative intelligence, CrewAI empowers agents to work together seamlessly, tackling complex tasks.项目地址: https://gitcode.com/GitHub_Trending/cr/crewAICrewAI 让多个智能体分工协作任何一处判断偏差都可能被整条任务链放大。本文带你走通一次完整的 CrewAI 单元测试闭环确认环境、写出不依赖模型的首个用例、隔离外部调用、定位失败原因。先确认测试环境能跑起来安装依赖并做基线验证仓库根目录有uv.lock说明依赖由 uv 管理。克隆仓库git clone https://gitcode.com/GitHub_Trending/cr/crewAI后执行uv sync安装环境。别急着看源码先挑一个轻量用例当基线运行uv run pytest lib/crewai/tests/test_imports.py -q能收集到用例且不报导入错误环境就算就绪。看懂根目录 conftest.py 的隔离机制根目录的 conftest.py 注册了几个 autouse 夹具每个用例都获得独立的临时存储目录写入CREWAI_STORAGE_DIR环境变量、清空事件总线状态、按顺序加载.env.test与本地.env。这意味着用例之间互相不污染你的测试结果不会因为执行顺序而改变多智能体测试里偶现失败的一大来源就被切掉了。写第一个不依赖模型的用例挑一个确定性的断言点多智能体测试容易一上来就盯着模型输出但首个用例应选纯逻辑点。lib/crewai/tests/test_task.py 里的 guardrail任务输出校验器接收结果并返回是否通过加修正值二元组参数检查就是好例子签名校验是确定性的输入错、输出必错最适合当第一个测试。import pytest from crewai import Task from pydantic import ValidationError def test_bad_guardrail_rejected(): with pytest.raises(ValidationError): Task(description列出5个选题, expected_output要点列表, guardraillambda x, y: (True, x))运行并解读结果用-k按名字过滤、-x在首个失败处停住。这条用例通过说明你已跑完一次最小闭环构造输入、断言异常类型、解读输出。下一步才考虑需要模型参与的用例。用 cassette 隔离外部模型调用为什么不能直接打真实接口LLM 响应不稳定、消耗费用直接调用会让测试忽过忽挂。仓库的做法是 vcr 录制真实 HTTP 请求的响应被存成 cassette 文件统一放在 lib/crewai/tests/cassettes/目录结构镜像测试文件位置。标了pytest.mark.vcr()的用例运行时直接回放录好的响应不发任何真实请求。回放规则与 CI 差异conftest.py里 record_mode 默认是oncecassette 不存在就录制一次存在就回放而在 CI 环境检测到GITHUB_ACTIONS会被强制成none只允许回放。所以本地跑这批 CrewAI mock 测试不需要真实 API key本地能过CI 也能过行为一致。测试失败时如何定位原因先分清环境问题和逻辑问题遇到失败先按三类排查环境变量缺失看根目录是否存在.env.test、cassette 缺失新用例第一次运行且本地无录制权限、状态污染通常被 conftest 的自动夹具挡住出现时检查是否新加了事件监听。配合-x加上短用例名可以快速二分到具体那条。借助追踪日志看中间步骤CrewAI 自带 tracing追踪机制会记录每一步的输入、输出与耗时。当一个多智能体任务在中间某步失败时与其反复打印变量不如读追踪记录确认是哪个智能体、哪一次调用偏离了预期。这套思路同样适用于线上系统出问题时做 CrewAI 调试。把 CrewAI pytest 测试接入日常流程只跑改动相关的部分全量套件较慢日常改完代码先跑受影响的目录# 只跑任务相关用例失败即停 uv run pytest lib/crewai/tests/test_task.py -k guardrail -x涉及异步任务改动时再补跑 lib/crewai/tests/task/ 下的对应文件。对齐 CI 的行为.github/workflows/tests.yml 定义了上游的测试流程PR 触发、Python 3.10 到 3.13 四个版本乘以 8 个分组的矩阵、cassette 在 CI 上只回放。你本地跑通的标准应当与它一致不依赖录制权限、不依赖特定 Python 版本的小技巧。提交前的自检清单用例能在干净环境独立运行不依赖其他用例的执行顺序涉及模型调用的用例走 cassette 回放不需要真实 API key失败时你能说清楚是环境问题还是断言本身失败只跑过与改动相关的测试文件且知道如何扩展到对应目录这条新的 CrewAI 单元测试覆盖了本次改动的核心逻辑而不是只验证没报错【免费下载链接】crewAIFramework for orchestrating role-playing, autonomous AI agents. By fostering collaborative intelligence, CrewAI empowers agents to work together seamlessly, tackling complex tasks.项目地址: https://gitcode.com/GitHub_Trending/cr/crewAI创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价