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.
81
75%
Does it follow best practices?
Impact
87%
1.12xAverage score across 3 eval scenarios
Low
Low-risk findings worth noting
Fix and improve this skill with Tessl
tessl review fix ./tests/ext_conformance/artifacts/agents-wshobson/backend-development/skills/temporal-python-testing/SKILL.mdThe canonical home for this skill is temporal-python-testing in wshobson/agents
Comprehensive testing approaches for Temporal workflows using pytest, progressive disclosure resources for specific testing scenarios.
Recommended Approach (Source: docs.temporal.io/develop/python/testing-suite):
Three Test Types:
This skill provides detailed guidance through progressive disclosure. Load specific resources based on your testing needs:
File: resources/unit-testing.md
When to load: Testing individual workflows or activities in isolation
Contains:
File: resources/integration-testing.md
When to load: Testing workflows with mocked external dependencies
Contains:
File: resources/replay-testing.md
When to load: Validating determinism or deploying workflow changes
Contains:
File: resources/local-setup.md
When to load: Setting up development environment
Contains:
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 == expectedfrom temporalio.testing import ActivityEnvironment
async def test_activity():
env = ActivityEnvironment()
result = await env.run(your_activity, "test-input")
assert result == expected_outputRecommended Coverage (Source: docs.temporal.io best practices):
Load specific resource when needed:
resources/unit-testing.mdresources/integration-testing.mdresources/local-setup.mdresources/replay-testing.md6453c0b
Canonical home
since Jan 28, 2026
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.