Temporal Python 工作流测试
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/temporal-python-testing。
技能介绍
要解决什么问题
Temporal 工作流往往跨越数天甚至数月,依赖真实 Activity 与外部系统。若在 CI 里按真实时间跑集成,反馈慢、环境难复现;只测 Activity 又无法覆盖工作流编排、信号与查询。部署前若未验证确定性,生产重放可能因非确定性代码而失败。
本技能整理的是与 Temporal Python 测试套件 一致的做法:用 pytest 与异步 fixture,把「长时间工作流」压到秒级,并用 mock 把工作流逻辑与外部依赖拆开。
技能如何组织
技能按场景做分级披露,你按当前任务加载对应资源即可:
- 单元测试(
resources/unit-testing.md):WorkflowEnvironment时间跳过、ActivityEnvironment测 Activity、pytest fixture 与手动推进时间 - 集成测试(
resources/integration-testing.md):mock Activity、错误注入、多 Activity 与 Signal/Query、覆盖率思路 - 重放测试(
resources/replay-testing.md):生产历史重放、确定性校验、部署前版本兼容 - 本地开发(
resources/local-setup.md):Docker Compose、pytest 与覆盖率工具、日常开发流程
推荐的三层划分:单元(时间跳过 + Activity 环境)、集成(Worker + mock Activity)、端到端(完整 Temporal 服务 + 真实 Activity,慎用)。工作流与 Activity 逻辑覆盖率目标通常为 ≥80%;集成侧覆盖带 mock 的关键路径,重放侧在发版前覆盖各工作流版本。
更细的步骤与示例见 resources/implementation-playbook.md。
适用边界
- 任务与 Temporal Python 测试策略无关,或需要本技能范围外的其他领域/工具时,不必加载本技能。
- 端到端测试成本高,文档建议以集成测试为主,仅在必要时上全栈 Temporal。
- 资源是指引与模式说明,具体项目仍需你自备工作流代码、历史导出与 CI 环境。
使用场景
- 为跨数周或数月的定时/延时工作流编写单元测试,用时间跳过在几秒内跑完全部分支而非等真实时钟
- 在合并或发布前,用生产导出的工作流历史做重放测试,确认代码变更未破坏确定性
- 工作流串联多个外部 API 的 Activity 时,用 mock Activity 测失败重试、超时与 Signal 处理,不调用真实下游
- 在本机用 Docker Compose 起 Temporal 服务,配置 pytest 异步 fixture 与覆盖率,日常改工作流即跑测试
适合人员
- 维护 Python Temporal Worker 的后端工程师,发版前要把工作流与 Activity 逻辑覆盖率拉到约 80% 并覆盖关键分支
- 负责 CI 的平台或基础架构工程师,需要把集成测试与重放校验纳入流水线,拦截非确定性变更
- 刚引入 Temporal 的业务团队技术负责人,要统一单元/集成/重放三层测试分工与资源加载方式
- 排查线上工作流重放失败或版本升级问题的工程师,需要按文档做确定性验证与历史重放对照