pytest

The Python testing framework that makes writing small tests easy and scales to complex functional test suites.

Framework
PyPI
v9.1.1
14,637 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
96 /100 Excellent
Development Activity 100
Maintenance 96
Community 88
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
89 /100 Excellent
Architecture 90
Code Quality 92
Innovation 88
Learning Curve 85

pytest is the de facto standard testing framework for Python, built around plain assert statements, detailed assertion introspection, and automatic test discovery so developers never need to remember self.assert* method names. Its modular fixture system (dependency injection for setup/teardown, resource management, and parametrization) combined with a pluggy-based hook architecture has made it the foundation for a plugin ecosystem of over 1,300 third-party extensions covering everything from coverage reporting to async support.

Beyond unit tests, pytest can run existing unittest and trial suites without modification, making it a practical drop-in upgrade path for legacy codebases. It is maintained by the pytest-dev organization on GitHub with a large, active contributor base and is used across the Python ecosystem from small libraries to major frameworks and data-science stacks.

What You Get

  • Automatic test discovery across modules, classes, and functions using configurable naming conventions
  • A fixture system for dependency injection, resource setup/teardown, and test parametrization at function, class, module, or session scope
  • Assertion rewriting that gives detailed introspection on plain assert failures, no custom assertion API required
  • A pluggy-based hook architecture (hookspec.py) letting plugins add CLI options, collection behavior, and reporting
  • Built-in compatibility running existing unittest and trial test suites unmodified
  • A rich plugin ecosystem of 1,300+ third-party extensions (coverage, xdist parallelization, async, mocking, and more)

Common Use Cases

  • Unit and functional testing for Python libraries and applications, from small scripts to large monorepos
  • Migrating legacy unittest-based test suites incrementally without rewriting existing tests
  • Parametrized and property-style testing via fixtures combined with plugins like hypothesis
  • Parallel and distributed test execution in CI pipelines via the pytest-xdist plugin
  • Building custom testing tools and plugins on top of pytest’s hook and fixture APIs

Under The Hood

Architecture pytest’s execution flow starts in src/_pytest/config/__init__.py (2,333 lines), which parses CLI arguments and pytest.ini/pyproject.toml config, builds a Config object, and initializes the pluggy PluginManager. Collection and test running are driven from src/_pytest/main.py, which walks the filesystem to discover test modules/classes/functions, then hands each collected item to src/_pytest/runner.py for the setup/call/teardown protocol. The fixture system, implemented in src/_pytest/fixtures.py (2,598 lines), resolves fixture dependency graphs per test, honoring scope (function/class/module/session) and finalizers. Extensibility runs through src/_pytest/hookspec.py (1,298 lines), which declares the full set of hook specifications (pytest_collect_file, pytest_runtest_protocol, etc.) that both pytest’s own internal plugins (assertion rewriting, capture, logging, doctest, and 20+ others under src/_pytest/) and third-party plugins implement via the pluggy library. Tech Stack The project is pure Python (99.99% of the codebase per GitHub’s language breakdown), targeting Python 3.10+ and PyPy3, with a minimal runtime dependency set: pluggy (the hook/plugin engine), iniconfig and packaging for config parsing, pygments for terminal syntax highlighting, plus conditional colorama (Windows), exceptiongroup, and tomli backports for older Python versions. Packaging uses setuptools with setuptools-scm for git-tag-based versioning; dependency locking for development uses uv.lock. Code Quality The testing/ directory contains 155+ test files exercising pytest’s own internals (a large self-hosted test suite, since pytest tests itself using pytest), alongside changelog/ entries enforced per-PR via a towncrier-style process. The codebase is fully type-annotated (ships a py.typed marker for both the pytest and _pytest packages) and enforces style via pre-commit.ci. Its extremely long-lived, incremental development history (17,585+ commits since 2015, ~88 commits/month recently) with a stable core team suggests high day-to-day code review rigor. API Design pytest’s public API is intentionally minimal: pytest.fixture, pytest.mark, pytest.raises, and plain assert cover the overwhelming majority of test-writing needs, with almost zero required boilerplate to get a first test running (def test_x(): assert ... is a complete, valid test file). The fixture-injection model (declaring a fixture as a test function parameter) is widely regarded as one of the more ergonomic dependency-injection patterns in the Python ecosystem, and the CLI (pytest) auto-discovers tests with no configuration required for the common case.

Used by 100 apps in this directory

TypeScript
71%
Other

highlight.io

Analytics · Developer Tools · Monitoring

9,384

Open-source full-stack monitoring that unifies session replay, error tracking, logging, and distributed tracing so you can stop context-switching between tools.

View details
76
Repo Health
78
Technical
65
Dependency
Built with
TypeScript 71%
Go 16%
Updated 6 days ago
TypeScript
82%
MIT

Hippo

AI Agents · AI Memory

784

A biologically-inspired memory layer for AI coding agents — memories decay by default and strengthen through use, modeled on the hippocampus, with zero runtime dependencies and a SQLite backbone.

View details
77
Repo Health
71
Technical
78
Dependency
Built with
TypeScript 82%
JavaScript 12%
Updated 5 days ago
Python
100%
MIT

hyperresearch

AI Agents · Developer Tools · Knowledge Management

3,940

A tier-adaptive 16-step deep research pipeline for Claude Code that produces adversarially-audited reports with full source provenance, backed by a persistent, searchable vault.

View details
81
Repo Health
85
Technical
73
Dependency
Built with
Python 100%
Updated 2 weeks ago
Rust
72%
Other

iii

Developer Tools · Devops

18,854

Compose, extend, and observe every backend service in real time using three primitives: Workers, Functions, and Triggers.

View details
87
Repo Health
85
Technical
65
Dependency
Built with
Rust 72%
TypeScript 16%
Updated 6 days ago
Python
64%
Other

Keep

Automation · Devops · Monitoring

12,433

The open-source AIOps and alert management platform that unifies 130+ monitoring tools into a single pane of glass with AI-powered correlation, deduplication, and workflow automation.

View details
88
Repo Health
79
Technical
66
Dependency
Built with
Python 64%
TypeScript 36%
Updated 1 weeks ago
Python
51%
AGPL 3.0

Khoj

AI Assistants · Knowledge Management · Productivity

37,802

A self-hostable AI second brain that chats with your documents, searches the web, builds custom agents, and runs entirely on your own LLM.

View details
62
Repo Health
82
Technical
66
Dependency
Built with
Python 51%
TypeScript 36%
Updated 2 months ago
Python
94%
Apache 2.0

knowhere

AI Development · AI Memory · Developer Tools

3,755

Transform messy, unstructured documents into persistent, navigable memory that AI agents can actually use.

View details
83
Repo Health
75
Technical
66
Dependency
Built with
Python 94%
Updated 5 days ago
TypeScript
84%
Apache 2.0

ktx

AI Development · Analytics · Data Engineering

1,623

ktx builds a self-improving context layer over your data warehouse so AI agents like Claude Code and Codex query it with approved metric definitions instead of reinventing SQL logic from scratch.

View details
52
Repo Health
85
Technical
71
Dependency
Built with
TypeScript 84%
Updated 1 weeks ago
TypeScript
39%
Apache 2.0

Label Studio

AI Development · Data Engineering

28,540

Label Studio is an open-source, multi-type data labeling platform that lets teams annotate images, text, audio, video, and time series data with a configurable XML-based UI and export annotations in formats ready for any ML framework.

View details
93
Repo Health
87
Technical
64
Dependency
Built with
TypeScript 39%
JavaScript 27%
Python 25%
Updated 6 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers