2.8 KiB
2.8 KiB
Python Testing Skill
Comprehensive testing with pytest including unit tests, integration tests, fixtures, and coverage reporting.
When to Use This Skill
Use this skill when:
- User requests to run tests
- User wants to create new tests
- User asks about test coverage
- User mentions pytest, unit tests, or integration tests
- Debugging test failures
Core Capabilities
-
Test Execution
- Run all tests or specific test files
- Run tests matching patterns
- Run only failed tests
- Generate test reports
-
Test Coverage
- Measure code coverage
- Generate HTML coverage reports
- Identify untested code
- Set coverage thresholds
-
Test Writing
- Create unit tests for functions and classes
- Write integration tests
- Use pytest fixtures effectively
- Implement parametrized tests
-
Test Organization
- Structure test files properly
- Use conftest.py for shared fixtures
- Organize tests by feature or module
- Mark tests for selective execution
Context Files
This skill references the following context files in this directory:
pytest-configuration.md- Pytest setup and configurationtest-patterns.md- Common testing patterns and examplesfixtures-guide.md- Using pytest fixturescoverage-guide.md- Code coverage best practices
Key Tools and Commands
# Run tests
uv run pytest # All tests
uv run pytest tests/test_file.py # Specific file
uv run pytest -k "pattern" # Tests matching pattern
uv run pytest --lf # Last failed only
# Coverage
uv run pytest --cov # With coverage
uv run pytest --cov --cov-report=html # HTML report
uv run pytest --cov --cov-report=term-missing # Show missing lines
# Output control
uv run pytest -v # Verbose
uv run pytest -s # Show print statements
uv run pytest -x # Stop on first failure
Common Test Patterns
Unit Test Example
def test_addition():
assert add(2, 3) == 5
assert add(-1, 1) == 0
Fixture Usage
@pytest.fixture
def sample_data():
return {"key": "value"}
def test_with_fixture(sample_data):
assert sample_data["key"] == "value"
Parametrized Tests
@pytest.mark.parametrize("input,expected", [
(2, 4),
(3, 9),
(4, 16),
])
def test_square(input, expected):
assert square(input) == expected
Expected Outcomes
After using this skill:
- Comprehensive test suite covering critical functionality
- High test coverage (ideally > 80%)
- Well-organized test files
- Clear test failure messages
- Fast test execution
Integration with Other Skills
- Works with
python-project-setupfor test directory structure - Complements
python-code-qualityfor comprehensive QA - Used by
python-project-setupagent for automated testing