研发协作
用 pytest 测试 Temporal…
在 Python 中为 Temporal 工作流编写测试(单元、集成、重放、本地开发)时,提供基于 pytest 的可执行测试策略。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
用 pytest 测试 Temporal特定
解决思路
- 以集成测试为主:大多数测试写成集成测试,使用 pytest 的 async fixtures。
- 利用 time-skipping 加速:用 WorkflowEnvironment.start_time_skipping() 让长达数月的工作流在秒级完成测试。
- Mock activities 隔离工作流逻辑:在集成测试中 mock 外部依赖的 activity,只验证工作流逻辑。
- 用重放测试验证确定性:在部署前用生产历史重放来校验工作流的确定性。
- 按三种测试类型分层:单元测试(工作流用 time-skipping,activity 用 ActivityEnvironment)、集成测试(Worker + mocked activities)、端到端测试(完整 Temporal server + 真实 activity,谨慎使用)。
- 单元测试工作流:在 pytest fixture 中启动 time-skipping 的 WorkflowEnvironment,用 Worker 注册 workflows 和 activities,再通过 client.execute_workflow 执行并断言结果。
- 单元测试 activity:用 ActivityEnvironment().run(your_activity, input) 直接运行 activity 并断言输出。
- 按需加载渐进式资源:测试单个工作流/activity 时加载 resources/unit-testing.md;测试带 mock 外部依赖的工作流时加载 resources/integration-testing.md;验证确定性或部署工作流变更时加载 resources/replay-testing.md;搭建本地开发环境时加载 resources/local-setup.md。
- 覆盖率达到目标:工作流和 activity 的逻辑覆盖率均 ≥80%,集成测试覆盖关键路径(mock activities),重放测试覆盖部署前的所有工作流版本。
- 保持快速反馈:单元测试应在毫秒级运行,借助 time-skipping 快速迭代。
- 本地开发环境搭建:使用 Docker Compose 配置 Temporal server,并配置 pytest 与覆盖率工具集成。
适用边界 · 注意事项
- 需要真实外部依赖或真实 Temporal server 的端到端测试应谨慎使用,不要作为主要测试手段。
- 不依赖 Temporal Python SDK 与 pytest 的项目不适用。