使用 pytest、时间跳转和模拟策略测试 Temporal 工作流。涵盖单元测试、集成测试、回放测试以及本地开发服务器。
Temperal Python测试策略是一项面向实际任务的技能,主要用于使用pytest, 渐进的披露资源进行Temperal工作流程的综合测试方法, 用于特定测试情景;何时使用此技能。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
使用 pytest 对 Temporal 工作流进行综合测试的方法,通过渐进式披露机制,按具体测试场景提供针对性资源。
推荐方法(来源:docs.temporal.io/develop/python/testing-suite):
三类测试类型:
本技能采用渐进式披露方式提供详细指导。请根据实际测试需求加载对应资源:
文件:resources/unit-testing.md
适用时机:独立测试单个工作流或 activity
内容包含:
文件:resources/integration-testing.md
适用时机:测试依赖外部服务被模拟后的工作流
内容包含:
文件:resources/replay-testing.md
适用时机:验证确定性,或在部署工作流变更前执行校验
内容包含:
文件:resources/local-setup.md
适用时机:搭建本地开发环境
内容包含:
import pytest
from temporalio.testing import WorkflowEnvironment
from temporalio.worker import Worker
@pytest.fixture
async def workflow_env():
env = await WorkflowEnvironment.start_time_skipping()
yield env
await env.shutdown()
@pytest.mark.asyncio
async def test_workflow(workflow_env):
async with Worker(
workflow_env.client,
task_queue="test-queue",
workflows=[YourWorkflow],
activities=[your_activity],
):
result = await workflow_env.client.execute_workflow(
YourWorkflow.run,
args,
id="test-wf-id",
task_queue="test-queue",
)
assert result == expected
from temporalio.testing import ActivityEnvironment
async def test_activity():
env = ActivityEnvironment()
result = await env.run(your_activity, "test-input")
assert result == expected_output
推荐覆盖率标准(来源:docs.temporal.io 最佳实践):
按需加载指定资源:
resources/unit-testing.mdresources/integration-testing.mdresources/local-setup.mdresources/replay-testing.md