技能 temporal-python-testing
📦

temporal-python-testing

低风险 ⚙️ 外部命令

精通 Temporal Python 工作流测试

也可从以下获取: wshobson

测试 Temporal 工作流非常复杂,因为涉及时间相关操作和分布式执行。本技能提供经过验证的 pytest 模式,包括时间跳过、活动模拟和重放测试,以实现可靠的测试覆盖率。

支持: Claude Codex Code(CC)
🥉 72 青铜
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“temporal-python-testing”。 测试具有 7 天审批超时的工作流

预期结果:

  • 使用时间跳过模式,工作流测试在 50 毫秒内完成
  • 所有审批路径分支都使用参数化输入进行了测试
  • 覆盖率报告显示 92% 的工作流逻辑覆盖率

正在使用“temporal-python-testing”。 针对 50 个生产历史记录进行重放测试

预期结果:

  • 48 个工作流重放成功 - 确定性
  • 2 个工作流失败 - 检测到非确定性随机数使用
  • 建议:用 workflow.random() 替换 random 模块

安全审计

低风险
v1 • 2/25/2026

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.

5
已扫描文件
1,975
分析行数
2
发现项
1
审计总数
低风险问题 (1)
Documentation Contains Shell Command Examples
Markdown documentation includes shell command examples for Docker and debugging (docker-compose, lsof). These are educational examples in code blocks, not executable code within the skill.
审计者: claude

质量评分

38
架构
100
可维护性
87
内容
50
社区
88
安全
91
规范符合性

你能构建什么

后端开发人员测试工作流

Python 开发人员需要测试包含长达数月睡眠持续时间的 Temporal 工作流。使用此技能实现时间跳过测试,在几毫秒内完成,在开发过程中实现快速反馈。

QA 工程师验证确定性

QA 工程师必须验证工作流更改不会破坏现有执行。使用此技能设置重放测试,在部署前针对生产工作流历史记录验证确定性。

DevOps 工程师设置 CI/CD

DevOps 工程师需要在 CI/CD 流水线中为 Temporal 工作流设置自动化测试。使用此技能将 pytest 与覆盖率跟踪和自动化历史记录导出集成,用于回归测试。

试试这些提示

基本工作流测试设置
帮我为一个包含 30 天睡眠的 Temporal 工作流编写 pytest 测试。展示如何使用带有时间跳过的 WorkflowEnvironment,使测试立即完成。
模拟外部依赖
我有一个通过活动调用支付和库存 API 的工作流。展示如何在集成测试中模拟这些活动,以测试工作流编排逻辑而不调用真实的外部服务。
验证工作流确定性
我修改了工作流代码,需要验证它与正在运行的工作流向后兼容。展示如何导出生产工作流历史记录并用新代码重放它们以验证确定性。
用于测试的 CI/CD 集成
设置一个 GitHub Actions 工作流,运行 Temporal 工作流的 pytest 测试,包括用于 Temporal 服务器的 Docker Compose、80% 阈值的覆盖率报告,以及用于重放测试的自动化历史记录导出。

最佳实践

  • 对所有单元测试使用时间跳过 WorkflowEnvironment 以实现快速反馈——月级工作流应在几毫秒内测试完成
  • 在集成测试中模拟所有外部依赖——测试执行期间切勿调用真实 API 以确保可靠性和速度
  • 每次部署前针对生产历史记录运行重放测试——这验证确定性并防止破坏正在运行的工作流

避免

  • 在工作流中直接使用 datetime.now() 或 random 模块——这些会破坏确定性并导致重放失败
  • 对每个测试使用真实 Temporal 服务器编写端到端测试——这很慢且脆弱;优先使用时间跳过单元测试
  • 部署前跳过重放测试——工作流代码更改可能会在没有适当验证的情况下破坏现有执行

常见问题

为什么重构工作流代码后我的重放测试失败?
当代码更改改变工作流决策序列时,重放测试会失败。确保使用 workflow.now() 而不是 datetime.now(),使用 workflow.random() 而不是 random 模块。避免更改活动 ID 或影响活动调用的条件分支逻辑。
如何测试具有长睡眠持续时间的工作流而无需等待?
使用 WorkflowEnvironment.start_time_skipping(),它会在工流睡眠时自动推进时间。30 天的睡眠在测试中立即完成。对于手动控制,使用 env.sleep(timedelta(hours=1)) 按特定量推进时间。
我应该用 ActivityEnvironment 还是在 Worker 中测试活动?
对活动逻辑使用 ActivityEnvironment 进行隔离单元测试——它更快且不需要 Temporal 服务器。当需要验证工作流 - 活动集成、重试行为或心跳处理时,在 Worker 中测试活动。
我应该多久导出一次生产工作流历史记录用于重放测试?
每周或在重大工作流更改后导出历史记录。保留至少 100 个代表性历史记录,覆盖不同的执行路径。使用计划任务自动化导出,查询最近完成的工作流并将历史记录保存到测试夹具目录。
Temporal 工作流的覆盖率目标应该是多少?
针对工作流逻辑和关键活动达到 80% 或更高的覆盖率。使用 pytest-cov 与 --cov-fail-under=80 在 CI 中强制执行阈值。重点是测试所有分支路径、错误场景和重试行为,而不是追求 100% 行覆盖率。
我能用 Claude、Codex 或 Claude Code 使用这个技能吗?
是的,这个技能与 Claude、Codex 和 Claude Code 兼容。所有三个 AI 助手都可以帮助实现测试模式、编写 pytest 测试、设置 Docker Compose 配置,并将重放测试集成到 CI/CD 流水线中。