Pytest Testing Framework

Python testing

by HoangNguyen0403 · MIT license · ★ 569 on GitHub

Python testing cover

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 Codenpx skills add HoangNguyen0403/agent-skills-standard --skill python-testing -g -a claude-code
Claude Code (degit)npx degit HoangNguyen0403/agent-skills-standard/skills/python/python-testing#develop ~/.claude/skills/python-testing
Claude.ai / desktopZip the folder and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md3.3 KB
Read SKILL.md here
HoangNguyen0403/develop1 file shown
SKILL.md
Show the full text63 lines

Python Testing

Priority: P0 (CRITICAL)

Core Rule Anchors

  • [BE-TEST-01] Parametrized Tests for Equivalent Inputs: Prefer pytest.mark.parametrize for 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 only assert result without 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 title fix(...) must introduce a failing test reproducing the defect before fixing it.

Rules

  • Use pytest and pytest-asyncio for async boundaries.
  • Add regression tests around contract parsing, workflow routing, and verifier outcomes ([BE-TEST-05]).
  • Prefer pytest.mark.parametrize for 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

  1. Write the failing test first for the boundary or regression ([BE-TEST-05]).
  2. Patch one seam high enough to keep the test readable ([BE-TEST-04]).
  3. Assert structured outcomes: metadata, route result, blocker text, emitted command ([BE-TEST-03]).
  4. Use async tests for async code; avoid spinning real event loops manually.
  5. 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 only assert 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---
2name: python-testing
3description: 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.
4metadata:
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 
431. **Write the failing test first** for the boundary or regression (`[BE-TEST-05]`).
442. **Patch one seam high enough** to keep the test readable (`[BE-TEST-04]`).
453. **Assert structured outcomes**: metadata, route result, blocker text, emitted command (`[BE-TEST-03]`).
464. **Use async tests for async code**; avoid spinning real event loops manually.
475. **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](../references/framework-map.md)
62- [Pytest Patterns](references/pytest-patterns.md)
63 
View all files on GitHub →

Details

License
MIT
Stars on the repo
★ 569
Checked
Source
HoangNguyen0403/agent-skills-standard ↗
Creator
HoangNguyen0403 · 21 listings
View creator

Similar skills

See all →
SkillXberg Document Extractorxberg-io/xberg · by xberg-ioExtract text, tables, metadata, and images from 107 document formats (PDF, Office, images, HTML, email, archives, academic) using Xberg. Use when writing code that calls Xberg APIs in Python, Node.js/TypeScript, Rust, or CLI. Covers installation, extraction (sync/async), configuration (OCR, chunking, output format), batch processing, error handling, and plugins.★ 9.4k GitHub starsSkillCode Migration Validatorkucherenko/jscpd · by kucherenkoMove code from one implementation to another function by function, tests first and code second, and check two implementations of one app for parity, with jscpd --compare as the progress measure and a coverage map binding each function to its tests. Use when porting a library or app to another language or framework (Java to Kotlin, JavaScript to Rust, a Python library to TypeScript, an iOS app to Android), when asked what is left to port, or when comparing the Android and iOS versions of an app.★ 6.3k GitHub starsSkillAhrefs API ManagerOpenClaudia/openclaudia-skills · by OpenClaudiaManages Ahrefs API usage in Python using `ahrefs-python` library. Use when working with SEO / marketing related tasks or with data including backlinks, keywords, domain ratings, organic traffic, site audits, rank tracking, and brand monitoring. Covers `ahrefs-python` usage including AhrefsClient / AsyncAhrefsClient, typed request/response models, error handling, and all API sections.★ 705 GitHub starsAgentDocx to Markdown Translatordealfluence/adeu · by dealfluenceDocx ↔ LLM translator. Projects .docx office files to Markdown for editing. Projects edits back to OOXML as tracked changes (redlines). Python and Node.js implementations.★ 165 GitHub starsSkillAmazon White-Background Creatorxianyu110/ecommerce-image-skills · by xianyu110Create an Amazon-compliant white-background main image (pure #FFFFFF background, product fills ≥85% of the frame, no text, props or watermark) from a product photo with GPT Image 2.5, then verify it with a Python check script. Use for Amazon/Walmart/eBay main images, 白底图, 白底主图, hero image, listing main photo.★ 92 GitHub starsAgentSendmux SDKSendmux/sendmux-sdk · by SendmuxOfficial monorepo of SDKs, CLI, and MCP servers for Sendmux email APIs across TypeScript, Python, Go, PHP, Rust, and Ruby.★ 65 GitHub stars

More from HoangNguyen0403

SkillAndroid Test WriterHoangNguyen0403/agent-skills-standard · by HoangNguyen0403Write Android unit, Compose UI, and Hilt-integrated tests. Use when designing test behavior with MockK or coroutine test utilities; defer database/WorkManager-specific recipes to the owning feature skill.★ 569 GitHub starsSkillArchitecture Diagram DesignerHoangNguyen0403/agent-skills-standard · by HoangNguyen0403Draws architecture diagrams as editable draw.io files with a fixed house style, C4 levels, evidence-tagged shapes, and optional multi-view identity checks. Use when producing a system context, container, component, deployment, data flow, sequence, state, or ERD, or redrawing an ASCII or Mermaid one.★ 569 GitHub starsSkillCode Review ExpertHoangNguyen0403/agent-skills-standard · by HoangNguyen0403Conduct high-quality, persona-driven code reviews. Use when reviewing PRs, critiquing code quality, or analyzing changes for team feedback.★ 569 GitHub starsSkillCybersecurity Framework MapperHoangNguyen0403/agent-skills-standard · by HoangNguyen0403Maintains sparse, reviewable cybersecurity framework edges with versioned IDs, relation, rationale, source, and review status. Use when mapping exercise observations or procedures to NIST, ATT&CK, or another named framework.★ 569 GitHub starsSkillDecision Discipline FrameworkHoangNguyen0403/agent-skills-standard · by HoangNguyen0403Right-size, ground, and gate SDLC decisions with SNC-sized depth, said-vs-assumed write-back, an evidence ledger, honest option cards, recorded approval, and self-review. Use when running brainstorm-feature, plan-feature, design-solution, or system-design-session.★ 569 GitHub starsSkillFlutter Robot Pattern TestsHoangNguyen0403/agent-skills-standard · by HoangNguyen0403Write unit, widget, and integration tests with robot patterns, widget keys, and Patrol in Flutter. Use when implementing test behavior; defer CI-only configuration without test changes.★ 569 GitHub stars