Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Python testing patterns with pytest, fixtures, TDD, mocking, async and integration tests. Use when writing or auditing a Python test suite.
.claude/skills/athola-python-testing/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-20 | ✓→✗ | ▼ Worse | -11% | 0% |
| case-03 | ✓→✓ | = Same ✓ | -29% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 14% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 11% | 0% |
| case-06 | ✓→✓ | = Same ✓ | 22% | 0% |
Testing standards for pytest configuration, fixture management, and TDD implementation.
pip install pytest pytest-cov pytest-asyncio pytest-mockpyproject.toml:toml [tool.pytest.ini_options] testpaths = ["tests"] addopts = "--cov=src"
pytest to confirm discovery of files matching test_*.py.pytest-mock or custom monkeypatching.pytest-asyncio markers and event loop management.quality - use pensive:test-review instead
config - use leyline:pytest-config
This skill uses modular loading to manage the system prompt budget.
modules/unit-testing.md - AAA (Arrange-Act-Assert) pattern, basic test structure, and exception validation.modules/fixtures-and-mocking.md - Request-scoped fixtures, parameterization, and boundary mocking.modules/async-testing.md - Coroutine testing, async fixtures, and concurrency validation.modules/test-infrastructure.md - Directory standards, conftest.py management, and coverage tools.modules/testing-workflows.md - Local execution patterns and GitHub Actions integration.modules/test-quality.md - Identification of common anti-patterns like broad exception catching or shared state between tests.test_*.py pattern. Use pytest --collect-only to debug discovery paths.pip install -e ..pytest-asyncio is installed and that async tests use the @pytest.mark.asyncio decorator or corresponding auto-mode configuration.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-20 | pass→fail | 17,100 | 12,175 | -29% | 1 | 1 | 0% | 2,974 | 2,635 | -11% | 0 | 0 | — |
case-01 | fail→fail | 15,532 | 14,737 | -5% | 1 | 1 | 0% | 3,027 | 3,603 | +19% | 0 | 0 | — |
case-02 | fail→fail | 10,258 | 8,526 | -17% | 1 | 1 | 0% | 1,894 | 2,118 | +12% | 0 | 0 | — |
case-03 | pass→pass | 14,118 | 5,794 | -59% | 1 | 1 | 0% | 2,235 | 1,578 | -29% | 0 | 0 | — |
case-04 | pass→pass | 6,005 | 4,817 | -20% | 1 | 1 | 0% | 1,137 | 1,295 | +14% | 0 | 0 | — |
case-05 | pass→pass | 6,074 | 3,226 | -47% | 1 | 1 | 0% | 1,016 | 1,123 | +11% | 0 | 0 | — |
case-06 | pass→pass | 11,807 | 9,814 | -17% | 1 | 1 | 0% | 1,926 | 2,353 | +22% | 0 | 0 | — |
case-07 | pass→pass | 7,202 | 5,493 | -24% | 1 | 1 | 0% | 1,269 | 1,470 | +16% | 0 | 0 | — |
case-08 | pass→pass | 8,564 | 3,214 | -62% | 1 | 1 | 0% | 1,367 | 1,162 | -15% | 0 | 0 | — |
case-09 | pass→pass | 11,951 | 12,447 | +4% | 1 | 1 | 0% | 2,245 | 2,846 | +27% | 0 | 0 | — |
case-10 | pass→pass | 13,463 | 9,170 | -32% | 1 | 1 | 0% | 2,173 | 2,134 | -2% | 0 | 0 | — |
case-11 | pass→pass | 23,004 | 7,220 | -69% | 1 | 1 | 0% | 1,742 | 1,803 | +4% | 0 | 0 | — |
case-12 | pass→pass | 9,398 | 8,368 | -11% | 1 | 1 | 0% | 1,676 | 2,131 | +27% | 0 | 0 | — |
case-13 | pass→pass | 11,157 | 8,583 | -23% | 1 | 1 | 0% | 1,865 | 1,896 | +2% | 0 | 0 | — |
case-14 | pass→pass | 5,633 | 5,479 | -3% | 1 | 1 | 0% | 795 | 1,369 | +72% | 0 | 0 | — |
case-15 | pass→pass | 13,115 | 12,095 | -8% | 1 | 1 | 0% | 2,292 | 2,006 | -12% | 0 | 0 | — |
case-16 | pass→pass | 11,419 | 9,965 | -13% | 1 | 1 | 0% | 2,054 | 2,429 | +18% | 0 | 0 | — |
case-17 | pass→pass | 16,149 | 11,898 | -26% | 1 | 1 | 0% | 2,833 | 2,866 | +1% | 0 | 0 | — |
case-18 | pass→pass | 8,944 | 7,753 | -13% | 1 | 1 | 0% | 1,658 | 2,175 | +31% | 0 | 0 | — |
case-19 | pass→pass | 2,873 | 8,996 | +213% | 1 | 1 | 0% | 431 | 2,019 | +368% | 0 | 0 | — |
case-21 | pass→pass | 9,720 | 8,937 | -8% | 1 | 1 | 0% | 1,811 | 2,313 | +28% | 0 | 0 | — |
case-22 | pass→pass | 4,881 | 4,778 | -2% | 1 | 1 | 0% | 752 | 1,362 | +81% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of -5 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Other measured skills in the registry, with their headline benchmark lift.