temporal-python-testing — Claude Code skill for Temporal tests
Guidance for testing Temporal workflows in Python with pytest, time-skipping, activity mocks, and replay checks. Use it while building workflow tests or investigating failures.
/plugin marketplace add wshobson/agents
/plugin install backend-development@claude-code-workflowsWhat temporal-python-testing does
The skill covers unit, integration, and replay testing for Temporal workflows. Its examples use WorkflowEnvironment to skip time, ActivityEnvironment to run activity tests, and Worker to execute a workflow. Time-skipping lets tests exercise long-running workflows without waiting for real time.
The material is split across resources/unit-testing.md, resources/integration-testing.md, resources/replay-testing.md, and resources/local-setup.md. Topics include mocking activities, injecting errors, testing signals and queries, checking determinism, and configuring pytest with Docker Compose. Install it if you work on Python projects that use Temporal; it has little to offer projects without Temporal.
What it helps with
- test a workflow with time-skipping
- isolate workflow logic by mocking activities
- run an activity test with ActivityEnvironment
- check workflow determinism against execution history
- set up a local Temporal and pytest environment
Example prompts for the agent
- Show me a unit test for a workflow that skips time.
- How can I mock activities and test error handling?
- How do I check workflow determinism before deployment?
How to install temporal-python-testing
1Plugin marketplace
/plugin marketplace add wshobson/agents/plugin install backend-development@claude-code-workflows2Skills CLI (Vercel)
npx skills add wshobson/agents --skill temporal-python-testing -a claude-code3Manually: put the files in place
~/.claude/skills/temporal-python-testing/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/temporal-python-testing/
1Skills CLI (Vercel)
npx skills add wshobson/agents --skill temporal-python-testing -a codex2Manually: put the files in place
.agents/skills/temporal-python-testing/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add wshobson/agents --skill temporal-python-testing -a cursor2Manually: put the files in place
.cursor/skills/temporal-python-testing/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install wshobson/agents temporal-python-testing2Manually: put the files in place
.github/skills/temporal-python-testing/SKILL.mdPlatform CLI
gemini skills install https://github.com/wshobson/agents --path plugins/backend-development/skills/temporal-python-testingManually: put the files in place
.devin/skills/temporal-python-testing/SKILL.mdThe legacy .windsurf/skills/ path still works
Claude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set213
The whole set →Similar
Questions about temporal-python-testing
How do I install temporal-python-testing in Claude Code?
Run npx skills add wshobson/agents --skill temporal-python-testing -a claude-code.
What does temporal-python-testing do?
It provides patterns for testing Python Temporal workflows and activities with pytest, including time-skipping, activity mocks, and replay checks for determinism.
How can I test a long-running Temporal workflow without waiting?
Use WorkflowEnvironment with time-skipping to exercise the workflow without waiting for real time to pass.
Source text
SKILL.md · MIT
---
name: temporal-python-testing
description: 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.
---
# 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 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
```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
© Seth Hobson · MIT · wshobson/agents