Pytest

v2026.09.24

This skill should be used when the user asks about "pytest", "writing tests", "test fixtures", "parametrize", "mocking", "test coverage", "conftest"

GitHub
Install command
npx skhub add eyadsibai/pytest
Markdown
SKILL.md

Pytest Testing

Guidance for writing effective tests with pytest.

Core Concepts

Fixtures

Reusable test setup/teardown. Use yield for cleanup.

Scopes:

ScopeRunsUse Case
functionEach testDefault, isolated
classOnce per classShared state in class
moduleOnce per fileExpensive setup
sessionOnce totalDB connections, servers

Key concept: conftest.py makes fixtures available to all tests in directory.


Parametrize

Test multiple inputs without repeating code.

Key concept: Generates separate test for each parameter set - failures are isolated.

Use pytest.param() for:

  • Custom test IDs
  • Expected failures (marks=pytest.mark.xfail)
  • Conditional skips

Markers

Tag tests for filtering and special behavior.

Built-inPurpose
@pytest.mark.skipAlways skip
@pytest.mark.skipif(condition)Conditional skip
@pytest.mark.xfailExpected failure
@pytest.mark.asyncioAsync test (with pytest-asyncio)

Custom markers: Define in pyproject.toml, run with pytest -m "marker"


Mocking

ToolUse Case
Mock()Create fake object
patch()Replace import
MagicMock()Mock with magic methods
AsyncMock()Mock async functions

Key concept: Patch where the thing is used, not where it's defined.


Test Organization

tests/
├── conftest.py          # Shared fixtures
├── unit/                # Fast, isolated
├── integration/         # Multiple components
└── e2e/                 # Full system

Coverage

Key thresholds:

  • 80%+ is good coverage
  • 100% is often overkill
  • Branch coverage catches conditionals

Config in pyproject.toml: Set source, branch=true, fail_under


Common Commands

CommandPurpose
pytest -vVerbose output
pytest -xStop on first failure
pytest -k "pattern"Filter by name
pytest -m "marker"Filter by marker
pytest -sShow print output
pytest -n autoParallel (pytest-xdist)
pytest --cov=srcWith coverage

Best Practices

PracticeWhy
One assertion per testClear failures
Descriptive test namesSelf-documenting
Arrange-Act-AssertConsistent structure
Test behavior, not implementationRefactor-proof
Use factories for test dataMaintainable
Keep tests fastRun often

Resources

Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

Not specified

Source path

plugins/ltk-engineering/skills/python/pytest

Default branch

master

Latest commit

f8e8569

Tree SHA

8bcd589