{
  "slug": "pytest",
  "name": "pytest",
  "aliases": ["py.test"],
  "vendor": { "name": "pytest-dev team", "slug": "pytest-dev", "website": "https://docs.pytest.org" },
  "homepage_url": "https://docs.pytest.org/en/stable/",
  "docs_url": "https://docs.pytest.org/en/stable/",
  "repo_url": "https://github.com/pytest-dev/pytest",
  "license_url": "https://github.com/pytest-dev/pytest/blob/main/LICENSE",
  "product_type": "framework",
  "product_status": "active",
  "summary": "Python testing framework with plain assert statements, fixtures, parametrization and a large plugin ecosystem, the de facto standard for Python test suites",
  "description": "pytest is a testing framework for Python maintained by the pytest-dev team under the MIT license. Tests are ordinary functions that use the built-in `assert` statement; pytest rewrites assertions to produce detailed failure messages without a special assertion API. Fixtures provide dependency injection for setup and teardown with configurable scope, and parametrization generates test cases from data tables.\n\nThe plugin architecture is its ecosystem: pytest-cov adds coverage, pytest-xdist distributes tests across CPU cores or machines, pytest-asyncio supports coroutines, Hypothesis integrates property-based testing, and Playwright ships an official pytest plugin for browser tests. pytest also runs unittest and nose-style suites, so adoption in legacy codebases is incremental. It is the default runner in most scientific Python projects and in tooling such as uv-managed packages. Limitations are mostly conceptual: fixture resolution through function arguments can be opaque in large suites, and plugin interactions sometimes complicate configuration in `pyproject.toml` or `pytest.ini`.",
  "capabilities": ["Plain assert statements with detailed introspection", "Fixtures with scopes and dependency injection", "Parametrized tests", "Plugin system (coverage, parallel execution, async, browsers)", "Compatibility with unittest suites", "Marker-based selection and configurable collection"],
  "workflows": ["Run a package's test suite in CI with coverage", "Parallelize slow tests across cores with pytest-xdist", "Drive browser tests through the Playwright plugin"],
  "advantages": ["Minimal boilerplate", "Very large plugin ecosystem", "MIT license"],
  "limitations": ["Fixture magic can be hard to trace in large suites", "Plugin interactions complicate configuration"],
  "prerequisites": ["Python; install with uv or pip"],
  "audiences": ["Python developers", "Data scientists testing pipelines", "Package maintainers"],
  "alternatives": [],
  "comparison_notes": "The standard library's unittest module is the built-in alternative with a class-based, xUnit-style API; pytest runs those tests as well and is generally preferred for new code because of fixtures and assertion rewriting.",
  "categories": [{ "slug": "testing-qa", "primary": true }],
  "tags": ["testing", "python", "open-source", "cli"],
  "use_cases": [],
  "operating_systems": ["macos", "linux", "windows"],
  "execution_modes": ["local", "cloud"],
  "interfaces": ["cli", "library"],
  "deployment_models": ["desktop"],
  "integrations": ["pytest-cov", "pytest-xdist", "Hypothesis", "Playwright", "GitHub Actions", "PyCharm", "VS Code"],
  "data_formats": ["Python", "JUnit XML", "pyproject.toml"],
  "languages": ["Python"],
  "source_model": "open-source",
  "license_spdx": "MIT",
  "pricing_model": ["open-source", "free"],
  "self_hostable": true,
  "sources": [
    { "url": "https://docs.pytest.org/en/stable/", "type": "official_site", "title": "pytest documentation", "supports": ["name", "summary", "capabilities"], "checked_at": "2026-11-02", "note": "pytest.org redirects to the documentation site" },
    { "url": "https://github.com/pytest-dev/pytest", "type": "repository", "title": "pytest-dev/pytest", "supports": ["repo_url", "source_model"], "checked_at": "2026-11-02" },
    { "url": "https://github.com/pytest-dev/pytest/blob/main/LICENSE", "type": "license_page", "supports": ["license_spdx"], "checked_at": "2026-11-02" }
  ],
  "confidence": "high",
  "discovery_method": "editorial-research",
  "depth": "standard",
  "editorial_status": "reviewed",
  "visibility": "public",
  "featured": false,
  "author": "batch-B1"
}
