New to Claude Skills? Learn how to install them →

Twshobson on GitHub

Temporal Python Testing

Free

Test Temporal workflows efficiently with pytest.

by wshobson38.7k stars on wshobson/agents
3 views
Updated Jul 18, 2026
Get this skill

Free · Opens the source repo

What Temporal Python Testing does

Temporal Python Testing provides a structured approach to testing Temporal workflows using the pytest framework. This skill encompasses various testing strategies, including unit testing, integration testing, and replay testing, making it suitable for developers working with Temporal. The skill offers a comprehensive guide to setting up your testing environment, ensuring that you can validate your workflows effectively and efficiently.

With a focus on progressive disclosure, the skill allows users to load specific resources based on their testing needs. For instance, unit testing resources help in testing individual workflows or activities in isolation, while integration testing resources guide users on how to test workflows with mocked external dependencies. Replay testing resources are particularly useful for validating determinism against production histories, ensuring that your workflows behave consistently.

This skill is ideal for developers who are implementing Temporal workflows and need to ensure their reliability through rigorous testing. It emphasizes best practices such as achieving high test coverage and utilizing time-skipping techniques to speed up the testing process. By leveraging the provided resources, developers can set up a local Temporal server, integrate testing into CI/CD pipelines, and validate their workflows before deployment.

Overall, Temporal Python Testing is a valuable skill for anyone looking to enhance their testing strategy for Temporal workflows, providing the necessary tools and guidance to achieve robust, efficient, and reliable testing outcomes.

When to use it

Use this skill when implementing or debugging Temporal workflows, particularly for unit, integration, and replay testing.

When not to use it

This skill may not be suitable for non-Temporal projects or for those who do not require extensive testing strategies.

What you can build with it

Unit Testing a Workflow

Use the unit testing resources to quickly validate individual workflows with time-skipping, ensuring isolated testing.

Integration Testing with Mocked Activities

Leverage integration testing resources to test workflows that depend on external activities, using mock strategies.

Setting Up Local Development Environment

Follow the local setup guide to configure your Temporal server and pytest environment for effective local testing.

How to install Temporal Python Testing

View source

1. Install with the skills CLI

npx skills add wshobson/agents/temporal-python-testing --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by wshobson

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

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

  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

Frequently asked questions about Temporal Python Testing

Similar skills