Python Testing Hub
Testing standards for pytest configuration, fixture management, and TDD implementation.
Table of Contents
Quick Start
- •Dependencies:
pip install pytest pytest-cov pytest-asyncio pytest-mock - •Configuration: Add the following to
pyproject.toml:toml[tool.pytest.ini_options] testpaths = ["tests"] addopts = "--cov=src"
- •Verification: Run
pytestto confirm discovery of files matchingtest_*.py.
When To Use
- •Constructing unit and integration tests for Python 3.9+ projects.
- •Isolating external dependencies using
pytest-mockor custom monkeypatching. - •Validating asynchronous logic with
pytest-asynciomarkers and event loop management. - •Configuring project-wide coverage thresholds and reporting.
When NOT To Use
- •Evaluating test quality - use pensive:test-review instead
- •Infrastructure test config - use leyline:pytest-config
- •Evaluating test quality - use pensive:test-review instead
- •Infrastructure test config - use leyline:pytest-config
Modules
This skill uses modular loading to manage the system prompt budget.
Core Implementation
- •See
modules/unit-testing.md- AAA (Arrange-Act-Assert) pattern, basic test structure, and exception validation. - •See
modules/fixtures-and-mocking.md- Request-scoped fixtures, parameterization, and boundary mocking. - •See
modules/async-testing.md- Coroutine testing, async fixtures, and concurrency validation.
Infrastructure & Workflow
- •See
modules/test-infrastructure.md- Directory standards,conftest.pymanagement, and coverage tools. - •See
modules/testing-workflows.md- Local execution patterns and GitHub Actions integration.
Standards
- •See
modules/test-quality.md- Identification of common anti-patterns like broad exception catching or shared state between tests.
Exit Criteria
- •Tests implement the AAA pattern.
- •Coverage reaches the 80% project minimum.
- •Individual tests are independent and do not rely on execution order.
- •Fixtures are scoped appropriately (function, class, or session) to prevent side effects.
- •Mocking is restricted to external system boundaries.
Troubleshooting
- •Test Discovery: Verify filenames match the
test_*.pypattern. Usepytest --collect-onlyto debug discovery paths. - •Import Errors: Ensure the local source directory is in the path, typically by installing in editable mode with
pip install -e .. - •Async Failures: Confirm that
pytest-asynciois installed and that async tests use the@pytest.mark.asynciodecorator or corresponding auto-mode configuration.