Temporal Python Testing Strategies
Comprehensive testing approaches for Temporal workflows using pytest, progressive disclosure resources for specific testing scenarios.
Do not use this skill when
- •The task is unrelated to temporal python testing strategies
- •You need a different domain or tool outside this scope
Instructions
- •Clarify goals, constraints, and required inputs.
- •Apply relevant best practices and validate outcomes.
- •Provide actionable steps and verification.
- •If detailed examples are required, open
resources/implementation-playbook.md.
Use this skill when
- •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:
- •Unit: Workflows with time-skipping, activities with ActivityEnvironment
- •Integration: Workers with mocked activities
- •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
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
Basic Activity Test
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
- •Time-Skipping - Month-long workflows test in seconds
- •Mock Activities - Isolate workflow logic from external dependencies
- •Replay Testing - Validate determinism before deployment
- •High Coverage - ≥80% target for production workflows
- •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
🏰 Rei Skills — Curated by Rootcastle Engineering & Innovation | Batuhan Ayrıbaş
Engineering Beyond Boundaries | admin@rootcastle.com