跳到正文
cccskills
免费在 GitHub 公开

python-testing

Write focused, deterministic, well-documented pytest tests for AI-authored code.

中文简介正在准备中。当前显示原文说明。

查看安装方法

包含的文件(3)

  • SKILL.md4.3 KB
  • assets/pytest.ini.template91 B
  • scripts/analyze_coverage.sh207 B

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

What I do

I help with three pytest workflows:

  1. Write tests — generate focused, well-documented tests following project conventions
  2. Check coverage — detect untested lines per file or folder
  3. Bootstrap setup — install dev dependencies and apply recommended pytest configuration

Supporting files in this skill:

  • assets/pytest.ini.template — ready-to-copy pytest configuration
  • scripts/analyze_coverage.sh [path] — coverage analysis helper (whole src or specific folder/module)
    • Run from repo root as: ./.claude/skills/python-testing/scripts/analyze_coverage.sh [path]
    • Or use repo-root-safe path: "$(git rev-parse --show-toplevel)/.claude/skills/python-testing/scripts/analyze_coverage.sh" [path]

When to use me

Use when you want to:

  • Write new tests for a module or feature
  • Review and improve existing test quality
  • Check coverage for a specific file, folder, or the whole project
  • Bootstrap pytest for a new project (deps + config)

Example usage

"Write tests for the slugify function in src/utils/text.py" "Check coverage for src/services/payment.py" "Set up pytest for this project with coverage and async support"


Conventions

Naming

  • Files: test_<module_or_feature>.py
  • Functions: test_<unit>__<behavior>__<condition>
  • Mark every AI-generated test with @pytest.mark.ai

Docstring (required on every test)

Three-part format:

Purpose: What this test verifies.
Why this matters: Business or technical consequence if it breaks.
Setup summary: What's arranged and what's asserted.

Structure

  • AAA pattern: Arrange – Act – Assert
  • No conditionals or loops in test body (use parametrization)
  • One responsibility per test

Fixtures

  • Centralize in <domain>_fixtures.py
  • Register via pytest_plugins = ["tests.fixtures"] in conftest.py
  • Return typed objects; modify only what changes per test

Mocking

  • Use mocker fixture (pytest-mock)
  • Mock at the import boundary of the code under test
  • Use spec=True for type safety

Coverage

  • Target ≥ 80% for AI-authored tests
  • ./.claude/skills/python-testing/scripts/analyze_coverage.sh — full src coverage
  • ./.claude/skills/python-testing/scripts/analyze_coverage.sh src/services — coverage for a specific folder
  • ./.claude/skills/python-testing/scripts/analyze_coverage.sh src/utils/text.py — coverage for a single file

Test scope & quality

  • Test every public function and method you touched
  • Cover happy paths plus negative scenarios, validation failures, and async edge cases
  • Keep tests deterministic and isolated (clean up temp data, reset mocks)
  • Mock only external dependencies using pytest-mock's mocker or hand-rolled fixtures
  • Document why each test matters using the required docstring template

Test cases to include

  • Happy path scenarios that reflect realistic inputs
  • Edge cases such as empty inputs, boundary values, and timeout paths
  • Error handling or exception flows (raise and capture specific exceptions)
  • Dependency failures (e.g., network timeouts, missing files) while staying fast
  • Concurrency and async behavior when applicable (use pytest.mark.asyncio or trio)

Test quality checklist

  • Tested all public functions and methods touched by the change
  • Covered happy path scenarios plus edge cases and negative flows
  • Added or updated tests for error handling and exception cases
  • Mocked external dependencies appropriately and kept mocks scoped
  • Ensured all tests are deterministic and repeatable
  • Kept tests focused (one assertion per behavior) and avoided loops/conditionals
  • Documented each test with the three-part docstring
  • Verified coverage with scripts/analyze_coverage.sh when changes affect multiple modules

Setup (new project)

  1. Install dev dependencies:
    • uv: uv add --dev pytest pytest-cov pytest-asyncio pytest-mock
    • pip: pip install pytest pytest-cov pytest-asyncio pytest-mock
  2. Copy assets/pytest.ini.template → pytest.ini at the project root
  3. Add tests/ directory with an empty __init__.py and conftest.py

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Implement comprehensive error handling for Python code paths to keep services resilient and user-friendly. Use when failures are currently silent or exceptions leak through.

中文简介正在准备中。当前显示原文说明。

Unique-AG/ai52026年10月19日 更新

Tabular and numerical data analysis with descriptive statistics and insights. Use when the user provides data, tables, CSVs, or numbers and wants analysis.

中文简介正在准备中。当前显示原文说明。

Unique-AG/ai52026年10月19日 更新

Financial factsheet analysis with key metrics extraction and investment rationale

中文简介正在准备中。当前显示原文说明。

Unique-AG/ai52026年10月19日 更新

ci-fix

免费

Diagnose and fix CI failures without leaving your editor.

中文简介正在准备中。当前显示原文说明。

Unique-AG/ai52026年10月19日 更新

Reproduce ai-repo PR checks locally with Poe and CI scripts, including per-package typecheck and coverage behavior. Use when validating changes before push or when user asks which local commands match CI.

中文简介正在准备中。当前显示原文说明。

Unique-AG/ai52026年10月19日 更新

Ask clarifying questions before implementing to ensure Python requirements are understood. Use when a task lacks detail, dependencies are unclear, or multiple interpretations are possible.

中文简介正在准备中。当前显示原文说明。

Unique-AG/ai52026年10月19日 更新

查看 Unique-AG 的全部技能

报告此技能的问题