home / skills / dmitriiweb / extract-emails / pytest-testing-assistant
This skill helps you craft focused pytest tests as standalone functions, ensuring clear naming, single assertions, and readable structure.
npx playbooks add skill dmitriiweb/extract-emails --skill pytest-testing-assistantReview the files below or copy the command above to add this skill to your agents.
---
name: pytest-testing-assistant
description: Write focused pytest tests as standalone functions (one test per function), avoiding test classes.
---
# Pytest Testing Assistant
## Quick start
- Write tests as plain functions; do not use test classes. Aim for one focused test per function/behavior.
- Use clear names: `test_<function>_<behavior>`; keep AAA (arrange/act/assert) obvious.
- Prefer one primary assertion per test; add minimal supporting checks when necessary.
- Use fixtures sparingly to keep tests readable; favor in-test setup when simple.
- Run with `pytest` or `pytest path/to/test_file.py` to scope runs.
- See `references/pytest_rules.md` for detailed guidelines and examples.
## Workflow
1) **Identify behavior**
- Target a single function/behavior per test. Name the test after the behavior being validated.
2) **Write the test**
- Use a standalone function `def test_<thing>():` (no classes).
- Keep a clear arrange/act/assert structure; avoid hidden work in fixtures unless it improves clarity.
- Use parametrization for small input/output matrices instead of loops.
3) **Assertions**
- Prefer one main assertion; add secondary checks only when they clarify the outcome.
- Include helpful assertion messages or use expressive matchers for readability.
4) **Run and iterate**
- Run `pytest` (optionally narrow with paths or `-k` expressions).
- Refine names and setup for readability and isolation.
## Reference
- `references/pytest_rules.md`: structure rules, naming patterns, and usage tips.
This skill generates focused pytest tests as standalone functions for a Python parser that extracts emails and LinkedIn account links from URLs. Tests follow a one-behavior-per-function approach, avoid test classes, and emphasize clear arrange/act/assert structure. The output is ready to drop into a test file and run with pytest.
Given a target function or behavior (for example: parse_emails_from_html, extract_linkedin_profiles, or parse_from_url), the skill emits one dedicated test function per behavior. Each test uses explicit inputs, invokes the parser, and asserts the primary expected outcome with minimal supporting checks. Parametrization is used for small input matrices and fixtures are suggested sparingly to keep each test readable and isolated.
Should I ever use test classes?
Avoid test classes here; use standalone functions to keep tests isolated and readable. Use fixtures only when they simplify repeated setup without hiding intent.
When should I parametrize tests?
Parametrize when you have a small matrix of input/output pairs that differ only by values. For complex scenarios prefer separate tests to keep failure messages focused.