temporal-python-testing

使用pytest、时间跳跃与模拟策略测试Temporal工作流。涵盖单元测试、集成测试、回放测试及本地开发环境配置。适用于实现Temporal工作流测试或调试测试失败场景。

作者

安装

热度:7

下载并解压到你的 skills 目录

复制命令,发送给 OpenClaw 自动安装:

下载并安装这个技能 https://openskills.cc/api/download?slug=sickn33-skills-temporal-python-testing&locale=zh&source=copy

Temporal Python Testing

使用 pytest 和 time-skipping 快速测试 Temporal workflows,涵盖单元测试、集成测试、回放测试和本地开发环境搭建的完整测试策略。

适用场景

  • 单元测试 Workflows — 使用 WorkflowEnvironment 的 time-skipping 功能,将需要运行一个月的 workflow 在几秒钟内完成测试,快速验证 workflow 逻辑正确性。
  • 集成测试与 Mock — 通过 mock 外部 activity 依赖,隔离测试 workflow 业务逻辑,无需调用真实的外部服务,提高测试稳定性和执行速度。
  • 生产验证与回放测试 — 在部署前使用生产环境的 history 进行回放测试,验证 workflow 代码变更后的确定性,避免非确定性导致的运行时错误。
  • 核心功能

  • Time-Skipping 快速测试 — 利用 WorkflowEnvironment 自动跳跃时间,使得包含长时间等待(如 sleep、定时器)的 workflow 能够在毫秒级完成测试,同时保持时间逻辑的准确性。
  • Activity Mocking 策略 — 提供 activity mock、错误注入、多 activity 协作测试等完整模式,帮助开发者隔离外部依赖,专注测试 workflow 核心逻辑。
  • 完整测试工具链 — 包含本地 Temporal server Docker 配置、pytest async fixtures、覆盖率工具集成和 CI/CD 流水线配置,支持 ≥80% 测试覆盖率目标。
  • 常见问题

    Time-skipping 如何让一个月的 workflow 在几秒内测试完成?

    WorkflowEnvironment 的 time-skipping 模式会自动跳过 workflow 中的所有等待时间(如 await asyncio.sleep(30 days)),只执行实际业务逻辑。当 workflow 需要等待某个时间点时,测试环境会直接将时间推进到该点,而不需要真实等待。这使得原本需要运行一个月的 workflow 可以在几秒钟内完成测试,同时保持时间逻辑的确定性。

    什么时候需要使用回放测试?

    回放测试主要用于以下场景:部署前验证 workflow 代码变更不会破坏确定性、升级 Temporal SDK 版本后验证兼容性、复现生产环境的非确定性错误。回放测试使用生产环境真实执行的 Event History 重新执行 workflow,如果新代码产生不同的决策路径,测试会立即失败,帮助你在部署前发现问题。

    如何达到推荐的 80% 测试覆盖率?

    采用分层测试策略:使用单元测试覆盖 workflow 核心逻辑分支(time-skipping 使这部分测试非常快速)、使用集成测试覆盖 activity 调用和错误处理路径、使用回放测试覆盖所有生产 workflow 版本。配置 pytest-cov 工具定期检查覆盖率,将关键业务逻辑的覆盖率目标设定为 ≥80%,对于复杂的 workflow 建议达到更高覆盖率。