3.4 KiB
TDD Python Reference
Comprehensive reference materials for Python Test-Driven Development - pytest, unittest, mocking, coverage, and Python-specific testing patterns.
Available References
pytest-guide.md
Complete pytest reference - fixtures, parametrize, marks, plugins, and configuration.
When to use: Modern Python projects, learning pytest patterns Covers: Fixtures, parametrize, marks, plugins, conftest.py, pytest.ini Key Topics: Dependency injection, test discovery, assertion introspection
unittest-guide.md
Comprehensive unittest reference - TestCase classes, assertions, setUp/tearDown, test discovery.
When to use: Legacy projects, corporate environments, no external dependencies Covers: TestCase structure, assertion methods, test organization, discovery Key Topics: Class-based testing, setUp/tearDown, unittest.main()
mocking-reference.md
Complete mocking guide - Mock, MagicMock, patch, side_effect, assert patterns.
When to use: Testing external dependencies, isolating units, verifying interactions Covers: unittest.mock, pytest-mock, mocking strategies, anti-patterns Key Topics: Mock vs stub vs spy, patching strategies, assertion methods
coverage-guide.md
Coverage analysis and interpretation - tools, metrics, thresholds, CI integration.
When to use: Measuring test effectiveness, finding gaps, enforcing quality gates Covers: coverage.py, pytest-cov, branch coverage, HTML reports, exclusions Key Topics: 80% line coverage target, critical path coverage, differential coverage
python-specific-testing.md
Python-specific testing patterns - async/await, decorators, generators, context managers, type hints.
When to use: Testing Python-specific features Covers: pytest-asyncio, testing decorators, generator testing, mypy integration Key Topics: Async testing, decorator verification, StopIteration, type checking
Quick Reference
pytest vs unittest
| Feature | pytest | unittest |
|---|---|---|
| Style | Functional | Class-based |
| Assertions | Plain assert |
self.assertEqual() |
| Setup | Fixtures | setUp()/tearDown() |
| Discovery | Automatic | unittest.main() |
| Dependencies | pip install pytest | Standard library |
Test Organization
project/
├── app/
│ └── module.py
└── tests/
├── conftest.py # Shared fixtures
├── test_module.py # Mirror source structure
└── integration/
└── test_api.py
Coverage Goals
| Metric | Minimum | Target | Critical Path |
|---|---|---|---|
| Line Coverage | 80% | 90%+ | 100% |
| Branch Coverage | 75% | 85%+ | 100% |
| Function Coverage | 85% | 90%+ | 100% |
Mocking Decision Matrix
| Dependency Type | Strategy | Tool |
|---|---|---|
| HTTP API | Stub responses | aioresponses, responses |
| Database | Test database | pytest fixtures |
| File I/O | Mock or tmp_path | unittest.mock, pytest |
| Time/Random | Patch | patch('time.time') |
| External Service | Mock | unittest.mock.Mock |
Return to tdd-python-implementer agent | examples/ | templates/ | checklists/