Temporal Python Testing

作者 wshobson46891e7e60da無授權條款收錄於 2026年10月8日更新於 2026年10月8日

Test Temporal workflows with pytest, time-skipping, and mocking strategies. Covers unit testing, integration testing, replay testing, and local development setup. Use when implementing Temporal workflow tests or debugging test failures.

AI 產生的概覽

指導使用 pytest、時間跳躍、模擬與重播驗證來測試 Temporal Python 工作流程。

功能
此技能提供測試以 Python 撰寫的 Temporal 工作流程的說明與參考資料。內容涵蓋使用時間跳躍的單元測試、使用模擬活動的整合測試、用於驗證確定性的重播測試,以及本機開發環境設定,並針對各面向提供漸進式揭露的資源檔案。它也給出覆蓋率目標與 pytest fixture 範例。
適用情境
在撰寫或除錯 Temporal Python 工作流程的測試時使用,包括單元測試、整合測試與重播測試。它也適合用於架設本機 Temporal 伺服器與 pytest 環境,或將工作流程測試加入 CI/CD 流程。
執行需求
需要 Python、Temporal Python SDK 與 pytest,並支援非同步測試。本機開發指南提到使用 Docker Compose 執行 Temporal 伺服器。此技能不含指令碼,只有說明文件與四個 markdown 資源檔案。

Temporal Python Testing Strategies

Comprehensive testing approaches for Temporal workflows using pytest, progressive disclosure resources for specific testing scenarios.

When to Use This Skill

  • Unit testing workflows - Fast tests with time-skipping
  • Integration testing - Workflows with mocked activities
  • Replay testing - Validate determinism against production histories
  • Local development - Set up Temporal server and pytest
  • CI/CD integration - Automated testing pipelines
  • Coverage strategies - Achieve ≥80% test coverage

Testing Philosophy

Recommended Approach (Source: docs.temporal.io/develop/python/testing-suite):

  • Write majority as integration tests
  • Use pytest with async fixtures
  • Time-skipping enables fast feedback (month-long workflows → seconds)
  • Mock activities to isolate workflow logic
  • Validate determinism with replay testing

Three Test Types:

  1. Unit: Workflows with time-skipping, activities with ActivityEnvironment
  2. Integration: Workers with mocked activities
  3. End-to-end: Full Temporal server with real activities (use sparingly)

Available Resources

This skill provides detailed guidance through progressive disclosure. Load specific resources based on your testing needs:

Unit Testing Resources

File: resources/unit-testing.md When to load: Testing individual workflows or activities in isolation Contains:

  • WorkflowEnvironment with time-skipping
  • ActivityEnvironment for activity testing
  • Fast execution of long-running workflows
  • Manual time advancement patterns
  • pytest fixtures and patterns

Integration Testing Resources

File: resources/integration-testing.md When to load: Testing workflows with mocked external dependencies Contains:

  • Activity mocking strategies
  • Error injection patterns
  • Multi-activity workflow testing
  • Signal and query testing
  • Coverage strategies

Replay Testing Resources

File: resources/replay-testing.md When to load: Validating determinism or deploying workflow changes Contains:

  • Determinism validation
  • Production history replay
  • CI/CD integration patterns
  • Version compatibility testing

Local Development Resources

File: resources/local-setup.md When to load: Setting up development environment Contains:

  • Docker Compose configuration
  • pytest setup and configuration
  • Coverage tool integration
  • Development workflow

Quick Start Guide

Basic Workflow Test

python
import pytestfrom temporalio.testing import WorkflowEnvironmentfrom temporalio.worker import Worker
@pytest.fixtureasync def workflow_env():    env = await WorkflowEnvironment.start_time_skipping()    yield env    await env.shutdown()
@pytest.mark.asyncioasync 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

Basic Activity Test

python
from temporalio.testing import ActivityEnvironment
async def test_activity():    env = ActivityEnvironment()    result = await env.run(your_activity, "test-input")    assert result == expected_output

Coverage Targets

Recommended Coverage (Source: docs.temporal.io best practices):

  • Workflows: ≥80% logic coverage
  • Activities: ≥80% logic coverage
  • Integration: Critical paths with mocked activities
  • Replay: All workflow versions before deployment

Key Testing Principles

  1. Time-Skipping - Month-long workflows test in seconds
  2. Mock Activities - Isolate workflow logic from external dependencies
  3. Replay Testing - Validate determinism before deployment
  4. High Coverage - ≥80% target for production workflows
  5. Fast Feedback - Unit tests run in milliseconds

How to Use Resources

Load specific resource when needed:

  • "Show me unit testing patterns" → Load resources/unit-testing.md
  • "How do I mock activities?" → Load resources/integration-testing.md
  • "Setup local Temporal server" → Load resources/local-setup.md
  • "Validate determinism" → Load resources/replay-testing.md

Additional References

  • Python SDK Testing: docs.temporal.io/develop/python/testing-suite
  • Testing Patterns: github.com/temporalio/temporal/blob/main/docs/development/testing.md
  • Python Samples: github.com/temporalio/samples-python

來源與署名

來源:wshobson/agents位於plugins/backend-development/skills/temporal-python-testing提交46891e7

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架