Pytest Testing Framework
Python testing

Test Python services with pytest, async coverage, monkeypatch, and boundary-focused fakes. Use when writing Python tests, fixtures, async tests, regression tests, or dependency-isolated verification.
---
name: python-testing
description: Test Python services with pytest, async coverage, monkeypatch, and boundary-focused fakes. Use when writing Python tests, fixtures, async tests, regression tests, or dependency-isolated verification.
metadata:
triggers:
files:
- "tests/**/*.py"
- "pytest.ini"
- "**/conftest.py"
- "**/test_*.py"
- "**/*_test.py"
keywords:
- pytest
- monkeypatch
- fixture
- async test
- regression test
---Overview
Test Python services with pytest, async coverage, monkeypatch, and boundary-focused fakes. Use when writing Python tests, fixtures, async tests, regression tests, or dependency-isolated verification.
Manual install (npx, ZIP)
Claude Code
npx skills add HoangNguyen0403/agent-skills-standard --skill python-testing -g -a claude-codeClaude Code (degit)
npx degit HoangNguyen0403/agent-skills-standard/skills/python/python-testing#develop ~/.claude/skills/python-testingClaude.ai / desktop
Codex, Cursor, other agents
Connects with Agent Alley MCP · agentalley.io/mcp
Files included
SKILL.md3.3 KB
Read SKILL.md here
SKILL.md
Show the full text63 lines
Python Testing
Priority: P0 (CRITICAL)
Core Rule Anchors
[BE-TEST-01]Parametrized Tests for Equivalent Inputs: Preferpytest.mark.parametrizefor equivalent inputs and boundary permutations. Distinct scenarios may stay separate.[BE-TEST-02]Ban on Brittle SQL String Matching: Test pure domain calculations directly or use fakes/testcontainers; do not regex-match SQL strings in mocks.[BE-TEST-03]Ban on Shallow Assertions: Never assert onlyassert resultwithout inspecting domain attributes and invariants.[BE-TEST-04]Ban on Pass-Through Seam Mocks: Repositories and adapters must test contract compliance and error mapping; ban 1:1 pass-through mock echoing.[BE-TEST-05]Bug-First Regression Lock: Every PR fixing a bug ticket or with titlefix(...)must introduce a failing test reproducing the defect before fixing it.
Rules
- Use
pytestandpytest-asynciofor async boundaries. - Add regression tests around contract parsing, workflow routing, and verifier outcomes (
[BE-TEST-05]). - Prefer
pytest.mark.parametrizefor equivalent inputs; distinct scenarios may stay separate ([BE-TEST-01]). - Prefer fakes or monkeypatch at external seams: DB, RPC, Telegram, subprocess, Docker (
[BE-TEST-02],[BE-TEST-04]). - Verify behavior and domain invariants, not shallow truthiness or implementation trivia (
[BE-TEST-03]). - Coverage is diagnostic and project-configured; verify risk-weighted critical paths rather than padding code for an arbitrary percentage.
Recipe
- Write the failing test first for the boundary or regression (
[BE-TEST-05]). - Patch one seam high enough to keep the test readable (
[BE-TEST-04]). - Assert structured outcomes: metadata, route result, blocker text, emitted command (
[BE-TEST-03]). - Use async tests for async code; avoid spinning real event loops manually.
- Cover negative paths for malformed packets, stale runtime state, and missing env.
Anti-Patterns
[BE-TEST-01]Stylistic parametrize rewrites: Do not demand parameterized rewrites of passing tests without a behavioral gap.[BE-TEST-02]SQL regex matching: Do not regex-match SQL strings in mocks.[BE-TEST-03]Shallow assertions: Never assert onlyassert result; always verify domain attributes and invariants.[BE-TEST-04]Pass-through seam mocks: Ban 1:1 mock echoing without contract assertions.[BE-TEST-05]Bug fix without reproduction test: Ban bug fixes without a reproduction test.- No live network or DB in unit tests: Use fakes or testcontainers.
- No broad monkeypatch spray: Patch the boundary, not every helper under it.
- No smoke-only proof for shared runtime changes: Add focused assertions too.
References
| 1 | |
| 2 | name python-testing |
| 3 | description Test Python services with pytest, async coverage, monkeypatch, and boundary-focused fakes. Use when writing Python tests, fixtures, async tests, regression tests, or dependency-isolated verification. |
| 4 | metadata |
| 5 | triggers |
| 6 | files |
| 7 | - "tests/**/*.py" |
| 8 | - "pytest.ini" |
| 9 | - "**/conftest.py" |
| 10 | - "**/test_*.py" |
| 11 | - "**/*_test.py" |
| 12 | keywords |
| 13 | - pytest |
| 14 | - monkeypatch |
| 15 | - fixture |
| 16 | - async test |
| 17 | - regression test |
| 18 | |
| 19 | |
| 20 | # Python Testing |
| 21 | |
| 22 | ## **Priority: P0 (CRITICAL)** |
| 23 | |
| 24 | ## Core Rule Anchors |
| 25 | |
| 26 | **`[BE-TEST-01]` Parametrized Tests for Equivalent Inputs**: Prefer `pytest.mark.parametrize` for equivalent inputs and boundary permutations. Distinct scenarios may stay separate. |
| 27 | **`[BE-TEST-02]` Ban on Brittle SQL String Matching**: Test pure domain calculations directly or use fakes/testcontainers; do not regex-match SQL strings in mocks. |
| 28 | **`[BE-TEST-03]` Ban on Shallow Assertions**: Never assert only `assert result` without inspecting domain attributes and invariants. |
| 29 | **`[BE-TEST-04]` Ban on Pass-Through Seam Mocks**: Repositories and adapters must test contract compliance and error mapping; ban 1:1 pass-through mock echoing. |
| 30 | **`[BE-TEST-05]` Bug-First Regression Lock**: Every PR fixing a bug ticket or with title `fix(...)` must introduce a failing test reproducing the defect before fixing it. |
| 31 | |
| 32 | ## Rules |
| 33 | |
| 34 | Use `pytest` and `pytest-asyncio` for async boundaries. |
| 35 | Add regression tests around contract parsing, workflow routing, and verifier outcomes (`[BE-TEST-05]`). |
| 36 | Prefer `pytest.mark.parametrize` for equivalent inputs; distinct scenarios may stay separate (`[BE-TEST-01]`). |
| 37 | Prefer fakes or monkeypatch at external seams: DB, RPC, Telegram, subprocess, Docker (`[BE-TEST-02]`, `[BE-TEST-04]`). |
| 38 | Verify behavior and domain invariants, not shallow truthiness or implementation trivia (`[BE-TEST-03]`). |
| 39 | Coverage is diagnostic and project-configured; verify risk-weighted critical paths rather than padding code for an arbitrary percentage. |
| 40 | |
| 41 | ## Recipe |
| 42 | |
| 43 | **Write the failing test first** for the boundary or regression (`[BE-TEST-05]`). |
| 44 | **Patch one seam high enough** to keep the test readable (`[BE-TEST-04]`). |
| 45 | **Assert structured outcomes**: metadata, route result, blocker text, emitted command (`[BE-TEST-03]`). |
| 46 | **Use async tests for async code**; avoid spinning real event loops manually. |
| 47 | **Cover negative paths** for malformed packets, stale runtime state, and missing env. |
| 48 | |
| 49 | ## Anti-Patterns |
| 50 | |
| 51 | **`[BE-TEST-01]` Stylistic parametrize rewrites**: Do not demand parameterized rewrites of passing tests without a behavioral gap. |
| 52 | **`[BE-TEST-02]` SQL regex matching**: Do not regex-match SQL strings in mocks. |
| 53 | **`[BE-TEST-03]` Shallow assertions**: Never assert only `assert result`; always verify domain attributes and invariants. |
| 54 | **`[BE-TEST-04]` Pass-through seam mocks**: Ban 1:1 mock echoing without contract assertions. |
| 55 | **`[BE-TEST-05]` Bug fix without reproduction test**: Ban bug fixes without a reproduction test. |
| 56 | **No live network or DB in unit tests**: Use fakes or testcontainers. |
| 57 | **No broad monkeypatch spray**: Patch the boundary, not every helper under it. |
| 58 | **No smoke-only proof for shared runtime changes**: Add focused assertions too. |
| 59 | ## References |
| 60 | |
| 61 | [Framework Map] |
| 62 | [Pytest Patterns] |
| 63 |
Details
- License
- MIT
- Stars on the repo
- ★ 569
- Checked
- Source
- HoangNguyen0403/agent-skills-standard ↗
- Creator
- HoangNguyen0403 · 21 listings
Similar skills
See all →
SkillXberg Document Extractor
SkillCode Migration Validator
SkillAhrefs API Manager
AgentDocx to Markdown Translator
SkillAmazon White-Background Creator
AgentSendmux SDKMore from HoangNguyen0403
SkillAndroid Test Writer
SkillArchitecture Diagram Designer
SkillCode Review Expert
SkillCybersecurity Framework Mapper
SkillDecision Discipline Framework
SkillFlutter Robot Pattern Tests