测试 Temporal 工作流非常复杂,因为涉及时间相关操作和分布式执行。本技能提供经过验证的 pytest 模式,包括时间跳过、活动模拟和重放测试,以实现可靠的测试覆盖率。
下载技能 ZIP
在 Claude 中上传
前往 设置 → 功能 → 技能 → 上传技能
开启并开始使用
测试它
正在使用“temporal-python-testing”。 测试具有 7 天审批超时的工作流
预期结果:
- 使用时间跳过模式,工作流测试在 50 毫秒内完成
- 所有审批路径分支都使用参数化输入进行了测试
- 覆盖率报告显示 92% 的工作流逻辑覆盖率
正在使用“temporal-python-testing”。 针对 50 个生产历史记录进行重放测试
预期结果:
- 48 个工作流重放成功 - 确定性
- 2 个工作流失败 - 检测到非确定性随机数使用
- 建议:用 workflow.random() 替换 random 模块
安全审计
低风险Static analyzer detected 140 patterns flagged as security concerns, but all are false positives from Markdown documentation containing Python code examples. The 'Ruby/shell backtick execution' patterns are Python code fences in markdown. URLs are localhost development references. Network, filesystem, and cryptographic findings are documentation examples, not executable code. Safe for publication as educational content.
低风险问题 (1)
风险因素
⚙️ 外部命令 (16)
质量评分
你能构建什么
后端开发人员测试工作流
Python 开发人员需要测试包含长达数月睡眠持续时间的 Temporal 工作流。使用此技能实现时间跳过测试,在几毫秒内完成,在开发过程中实现快速反馈。
QA 工程师验证确定性
QA 工程师必须验证工作流更改不会破坏现有执行。使用此技能设置重放测试,在部署前针对生产工作流历史记录验证确定性。
DevOps 工程师设置 CI/CD
DevOps 工程师需要在 CI/CD 流水线中为 Temporal 工作流设置自动化测试。使用此技能将 pytest 与覆盖率跟踪和自动化历史记录导出集成,用于回归测试。
试试这些提示
帮我为一个包含 30 天睡眠的 Temporal 工作流编写 pytest 测试。展示如何使用带有时间跳过的 WorkflowEnvironment,使测试立即完成。
我有一个通过活动调用支付和库存 API 的工作流。展示如何在集成测试中模拟这些活动,以测试工作流编排逻辑而不调用真实的外部服务。
我修改了工作流代码,需要验证它与正在运行的工作流向后兼容。展示如何导出生产工作流历史记录并用新代码重放它们以验证确定性。
设置一个 GitHub Actions 工作流,运行 Temporal 工作流的 pytest 测试,包括用于 Temporal 服务器的 Docker Compose、80% 阈值的覆盖率报告,以及用于重放测试的自动化历史记录导出。
最佳实践
- 对所有单元测试使用时间跳过 WorkflowEnvironment 以实现快速反馈——月级工作流应在几毫秒内测试完成
- 在集成测试中模拟所有外部依赖——测试执行期间切勿调用真实 API 以确保可靠性和速度
- 每次部署前针对生产历史记录运行重放测试——这验证确定性并防止破坏正在运行的工作流
避免
- 在工作流中直接使用 datetime.now() 或 random 模块——这些会破坏确定性并导致重放失败
- 对每个测试使用真实 Temporal 服务器编写端到端测试——这很慢且脆弱;优先使用时间跳过单元测试
- 部署前跳过重放测试——工作流代码更改可能会在没有适当验证的情况下破坏现有执行