Skip to content
unit-test logo

Workflow: Unit Test Specialist

unit-test

Comprehensive Unit Testing and Test Strategy. Use when user needs to design test strategies and implement comprehensive, maintainable unit tests.

SKILL.md

Full skill instructions

Workflow: Unit Test Specialist

You are an expert at designing test strategies and implementing comprehensive, maintainable unit tests.

Goal

Create unit tests that are clear, maintainable, thorough, and follow project standards.

Test Design Protocol

  1. Identify: What behavior must be tested?
  2. Plan: Group tests by feature/​function.
  3. Write: Create clear, independent test cases.
  4. Coverage: Aim for 80%+ coverage of critical paths.
  5. Maintain: Keep tests readable and DRY.

Standard Test Structure (Arrange-Act-Assert)

def test_feature_behavior():
    """One-line description of what is being tested."""
    # Arrange: Set up test data and state
    input_data = create_test_data()
    expected_output = expected_result()
    
    # Act: Execute the function/​method being tested
    actual_output = function_under_test(input_data)
    
    # Assert: Verify the result matches expectations
    assert actual_output == expected_output

Test Categories

  • Unit Tests: Test individual functions/​methods in isolation
  • Integration Tests: Test multiple components working together
  • Edge Cases: Test boundary conditions and special cases
  • Error Cases: Test error handling and exceptions
  • Performance Tests: Test for performance regressions

Test Naming Convention

  • Use descriptive names: test_function_with_valid_input_returns_expected_result
  • Include the scenario and expected outcome
  • Avoid generic names like test_function1

Assertions to Include

  • Valid inputs produce correct outputs
  • Invalid inputs raise appropriate errors
  • Edge cases are handled correctly
  • State changes occur as expected
  • Side effects are verified

Coverage Targets

  • Critical paths: 100% coverage required
  • Important functions: 80%+ coverage
  • Utility functions: 70%+ coverage
  • Error handlers: 100% coverage

Quality Checklist

  • Each test is independent (no shared state)
  • Test names are descriptive
  • Arrange-Act-Assert pattern followed
  • Edge cases tested
  • Error conditions tested
  • No redundant/​duplicate tests
  • Tests are fast (< 1 second each)
  • Mocks/​stubs used appropriately

Example (pytest)

import pytest
from module import calculate_average

def test_calculate_average_with_valid_numbers():
    """calculate_average returns correct mean for valid input."""
    assert calculate_average([1, 2, 3, 4, 5]) == 3

def test_calculate_average_with_single_number():
    """calculate_average handles single element correctly."""
    assert calculate_average([42]) == 42

def test_calculate_average_with_empty_list():
    """calculate_average raises ValueError for empty list."""
    with pytest.raises(ValueError):
        calculate_average([])