Test-Driven Development
Implement $ARGUMENTS using Test-Driven Development (TDD).
TDD Cycle
Repeat: Red → Green → Refactor
1. Red: Write a failing test
2. Green: Write minimal code to pass the test
3. Refactor: Clean up code (tests still pass)Implementation Steps
Phase 1: Test Design
- Confirm Requirements
- What is the input - What is the output - What are the edge cases
- List Test Cases
- [] Happy path: Basic functionality - [] Happy path: Boundary values - [] Error case: Invalid input - [] Error case: Error handling
Phase 2: Red-Green-Refactor
Step 1: Write First Test (Red)
# tests/test_{module}.py
def test_{function}_basic():
"""Test the most basic case"""
result = function(input)
assert result == expectedRun test and confirm failure:
uv run pytest tests/test_{module}.py -vStep 2: Implementation (Green)
Write minimal code to pass the test:
- Don't aim for perfection
- Hardcoding is OK
- Just make the test pass
Run test and confirm success:
uv run pytest tests/test_{module}.py -vStep 3: Refactoring (Refactor)
Improve while tests still pass:
- Remove duplication
- Improve naming
- Clean up structure
uv run pytest tests/test_{module}.py -v # Confirm still passesStep 4: Next Test
Return to Step 1 with next test case from the list.
Phase 3: Completion Check
# Run all tests
uv run pytest -v
# Check coverage (target 80%+)
uv run pytest --cov={module} --cov-report=term-missingReport Format
## TDD Complete: {Feature Name}
### Test Cases
- [x] {test1}: {description}
- [x] {test2}: {description}
...
### Coverage
{Coverage report}
### Implementation Files
- `src/{module}.py`: {description}
- `tests/test_{module}.py`: {N} testsNotes
- Write tests first (not after)
- Keep each cycle small
- Refactor after tests pass
- Prioritize working code over perfection