This is intended to find the most popular (as determined by download count) pytest plugins, as plugins usually have “pytest” in the name.
Counts are the number of downloads over 30 days.
The list
Data last updated: 2026-08-01 06:34:08
| # | Package | Downloads | Summary |
|---|---|---|---|
| 1 | pytest-asyncio | 275,917,521 | pytest support for asyncio |
| 2 | pytest-json-ctrf | 273,013,127 | pytest plugin to generate json report in CTRF (Common Test Report Format) |
| 3 | pytest-cov | 235,924,037 | pytest plugin for measuring coverage. Test and Code episode pytest-cov : The pytest plugin for measuring coverage |
| 4 | pytest-xdist | 177,097,162 | pytest xdist plugin for distributed testing, most importantly across multiple CPUs |
| 5 | pytest-mock | 105,035,819 | Thin-wrapper around the mock package for easier use with pytest Test and Code episode pytest-mock : Mocking in pytest |
| 6 | pytest-timeout | 103,142,767 | pytest plugin to abort hanging tests |
| 7 | pytest-rerunfailures | 79,126,164 | pytest plugin to re-run tests to eliminate flaky failures |
| 8 | hypothesis | 48,260,681 | The property-based testing library for Python Includes a small pytest plugin. |
| 9 | pytest-metadata | 35,249,000 | pytest plugin for test session metadata Test and Code episode pytest-metadata - provides access to test session metadata |
| 10 | pytest-env | 24,043,458 | pytest plugin that allows you to add environment variables. |
| 11 | pytest-httpx | 22,873,380 | Send responses to httpx. |
| 12 | pytest-html | 21,783,628 | pytest plugin for generating HTML reports Test and Code episode pytest-html - a plugin that generates HTML reports for test results |
| 13 | pytest-django | 21,555,994 | A Django plugin for pytest. Test and Code episode pytest-django with Adam Johnson |
| 14 | pytest-split | 20,969,797 | pytest plugin which splits the test suite to equally sized sub suites based on test execution time. |
| 15 | pytest-repeat | 15,509,841 | pytest plugin for repeating tests Test and Code episode pytest-repeat - works fine on Python 3.14 |
| 16 | pytest-json-report | 15,022,199 | A pytest plugin to report test results as JSON files Seems no longer supported, but leaving here to recommend pytest-json-report-wip |
| 17 | pytest-benchmark | 14,224,897 | A pytest fixture for benchmarking code. It will group the tests into rounds that are calibrated to the chosen timer. |
| 18 | pytest-socket | 13,881,633 | pytest Plugin to disable socket calls during tests |
| 19 | syrupy | 13,351,369 | pytest Snapshot Test Utility |
| 20 | pytest-unordered | 10,998,579 | Test equality of unordered collections in pytest |
| 21 | pytest-base-url | 10,189,946 | pytest plugin for URL based testing |
| 22 | pytest-randomly | 10,021,263 | pytest plugin to randomly order tests and control random.seed. |
| 23 | pytest-icdiff | 9,655,067 | use icdiff for better error messages in pytest assertions |
| 24 | pytest-playwright | 9,625,460 | A pytest wrapper with fixtures for Playwright to automate web browsers |
| 25 | pytest-homeassistant-custom-component | 9,409,116 | Experimental package to automatically extract test plugins for Home Assistant custom components |
| 26 | pytest-dependency | 8,908,309 | Manage dependencies of tests |
| 27 | pytest-sugar | 8,196,404 | pytest-sugar is a plugin for pytest that changes the default look and feel of pytest (e.g. progressbar, show tests that fail instantly). |
| 28 | allure-pytest | 8,136,290 | Allure pytest integration |
| 29 | pytest-custom-exit-code | 7,855,803 | Exit pytest test session with custom exit code in different scenarios |
| 30 | pytest-instafail | 7,280,646 | pytest plugin to show failures instantly |
| 31 | pytest-postgresql | 6,639,491 | Postgresql fixtures and fixture factories for pytest. |
| 32 | pytest-recording | 6,134,948 | A pytest plugin powered by VCR.py to record and replay HTTP traffic |
| 33 | pytest-order | 6,082,883 | pytest plugin to run tests in a specific order |
| 34 | pytest-aiohttp | 6,033,878 | pytest plugin for aiohttp support |
| 35 | pytest-dotenv | 5,523,005 | A py.test plugin that parses environment files before running tests |
| 36 | pytest-subtests | 4,875,378 | unittest subTest() support and subtests fixture Test and Code episode Subtests in Python with unittest and pytest |
| 37 | pytest-testmon | 4,761,816 | selects tests affected by changed files and methods |
| 38 | pytest-check | 4,041,371 | A pytest plugin that allows multiple failures per test. Test and Code episode pytest-check - allow multiple failures per test |
| 39 | pytest-httpserver | 3,898,973 | pytest-httpserver is a httpserver for pytest |
| 40 | pytest-timeouts | 3,718,049 | Linux-only pytest plugin to control durations of various test case execution phases |
| 41 | pytest-github-actions-annotate-failures | 3,672,515 | pytest plugin to annotate failed tests with a workflow command for GitHub Actions |
| 42 | pytest-bdd | 3,611,297 | BDD for pytest |
| 43 | pytest-durations | 3,493,107 | pytest plugin reporting fixtures and test functions execution time. |
| 44 | pytest-memray | 2,893,206 | A simple plugin to use with pytest |
| 45 | pytest-codspeed | 2,883,538 | pytest plugin to create CodSpeed benchmarks |
| 46 | pytest-random-order | 2,844,743 | Randomise the order in which pytest tests are run with some control over the randomness |
| 47 | pytest-factoryboy | 2,833,269 | Factory Boy support for pytest. |
| 48 | pytest-ordering | 2,754,298 | pytest plugin to run your tests in a specific order |
| 49 | pytest-snapshot | 2,603,450 | A plugin for snapshot testing with pytest. |
| 50 | pytest-retry | 2,588,607 | Adds the ability to retry flaky tests in CI environments |
| 51 | pytest-docker | 2,387,633 | Simple pytest fixtures for Docker and Docker Compose based tests |
| 52 | pytest-vcr | 2,292,932 | Plugin for managing VCR.py cassettes |
| 53 | pytest-lazy-fixtures | 2,186,025 | Allows you to use fixtures in @pytest.mark.parametrize. |
| 54 | pytest-flakefinder | 2,065,167 | Runs tests multiple times to expose flakiness. |
| 55 | pytest-profiling | 1,867,549 | Profiling plugin for py.test |
| 56 | pytest-celery | 1,859,167 | pytest plugin for Celery |
| 57 | pytest-watcher | 1,808,295 | Automatically rerun your tests on file modifications |
| 58 | pytest-datadir | 1,767,458 | pytest plugin for test data directories and files |
| 59 | pytest-docker-tools | 1,737,976 | Docker integration tests for pytest |
| 60 | pytest-test-groups | 1,559,786 | A pytest plugin for running a subset of your tests by splitting them in to equally sized groups. |
| 61 | pytest-testinfra | 1,545,408 | Test infrastructures |
| 62 | pytest-flask | 1,476,016 | A set of py.test fixtures to test Flask applications. |
| 63 | pytest-freezegun | 1,437,061 | Wrap tests with fixtures in freeze_time |
| 64 | pytest-freezer | 1,383,989 | pytest plugin providing a fixture interface for spulec/freezegun |
| 65 | pytest-alembic | 1,284,731 | A pytest plugin for verifying alembic migrations. |
| 66 | pytest-pretty | 1,217,846 | pytest plugin for printing summary data as I want it |
| 67 | pytest-opentelemetry | 1,205,304 | A pytest plugin for instrumenting test runs via OpenTelemetry |
| 68 | pytest-qt | 1,187,026 | pytest support for PyQt and PySide applications |
| 69 | pytest-describe | 1,170,995 | Describe-style plugin for pytest |
| 70 | pytest-sftpserver | 1,067,149 | py.test plugin to locally test sftp server connections. |
| 71 | pytest-regressions | 1,026,806 | Easy to use fixtures to write regression tests. |
| 72 | pytest-deadfixtures | 1,021,674 | A simple plugin to list unused fixtures in pytest |
| 73 | pytest-cases | 1,020,857 | Separate test code from test cases in pytest. |
| 74 | pytest-reportportal | 1,011,026 | Agent for Reporting results of tests to the Report Portal |
| 75 | pytest-ansible | 983,385 | Plugin for pytest to simplify calling ansible modules from tests or fixtures |
| 76 | pytest-find-dependencies | 983,229 | A pytest plugin to find dependencies between tests |
| 77 | pytest-watch | 946,128 | Local continuous test runner with pytest and watchdog. |
| 78 | pytest-azurepipelines | 858,105 | Formatting PyTest output for Azure Pipelines UI |
| 79 | pytest-picked | 818,607 | Run the tests related to the changed files |
| 80 | pytest-anyio | 809,233 | The pytest anyio plugin is built into anyio. You don’t need this package. |
| 81 | pytest-reportlog | 801,875 | Replacement for the –resultlog option, focused in simplicity and extensibility |
| 82 | pytest-race | 792,803 | Race conditions tester for pytest |
| 83 | pytest-assume | 789,545 | A pytest plugin that allows multiple failures per test |
| 84 | pytest-md | 737,238 | Plugin for generating Markdown reports for pytest results Test and Code episode pytest-md and pytest-md-report: Markdown reports for pytest |
| 85 | pytest-harvest | 730,549 | Store data created during your pytest tests execution, and retrieve it at the end of the session, e.g. for applicative benchmarking purposes. |
| 86 | pytest-cache | 687,699 | pytest plugin with mechanisms for caching across test runs |
| 87 | pytest-doctestplus | 678,215 | pytest plugin with advanced doctest features. |
| 88 | pytest-mpl | 677,495 | pytest plugin to help with testing figures output from Matplotlib |
| 89 | pytest-variables | 660,940 | pytest plugin for providing variables to tests/fixtures |
| 90 | pytest-clarity | 650,999 | A plugin providing an alternative, colourful diff output for failing assertions. |
| 91 | pytest-nunit | 629,105 | A pytest plugin for generating NUnit3 test result XML output |
| 92 | pytest-pylint | 616,413 | pytest plugin to check source code with pylint |
| 93 | pytest-lazy-fixture | 608,183 | It helps to use fixtures in pytest.mark.parametrize |
| 94 | pylint-pytest | 600,624 | A Pylint plugin to suppress pytest-related false positives. |
| 95 | pytest-examples | 594,886 | pytest plugin for testing examples in docstrings and markdown files. |
| 96 | pytest-pytestrail | 565,669 | pytest plugin for interaction with TestRail |
| 97 | pytest-mypy | 557,278 | A pytest Plugin for Mypy |
| 98 | pytest-csv | 551,864 | CSV output for pytest. |
| 99 | pytest-subprocess | 514,874 | A plugin to fake subprocess for pytest |
| 100 | pytest-flake8 | 506,312 | pytest plugin to check FLAKE8 requirements |
| 101 | pytest-selenium | 504,519 | pytest plugin for Selenium |
| 102 | pytest-timestamper | 478,332 | pytest plugin to add a timestamp prefix to the pytest output |
| 103 | pytest-mypy-plugins | 459,503 | pytest plugin for writing tests for mypy plugins |
| 104 | pytest-remotedata | 429,009 | pytest plugin for controlling remote data access. |
| 105 | pytest-pep8 | 417,618 | pytest plugin to check PEP8 requirements |
| 106 | pytest-md-report | 398,484 | A pytest plugin to generate test outcomes reports with markdown table format. Test and Code episode pytest-md and pytest-md-report: Markdown reports for pytest |
| 107 | pytest-localserver | 395,896 | pytest plugin to test server connections locally. |
| 108 | pytest-trio | 394,538 | pytest plugin for trio |
| 109 | pytest-spark | 390,724 | pytest plugin to run the tests with support of pyspark. |
| 110 | pytest-tornado | 378,257 | A py.test plugin providing fixtures and markers to simplify testing of asynchronous tornado applications. |
| 111 | pytest-html-merger | 374,401 | pytest HTML reports merging utility |
| 112 | pytest-fixture-config | 351,234 | Fixture configuration utils for py.test |
| 113 | pytest-arraydiff | 344,276 | pytest plugin to help with comparing array output from tests |
| 114 | pytest-textual-snapshot | 343,784 | Snapshot testing for Textual apps |
| 115 | pytest-tagging | 342,890 | a pytest plugin to tag tests |
| 116 | pytest-filter-subpackage | 334,728 | pytest plugin for filtering based on sub-packages |
| 117 | pytest-json | 328,193 | Generate JSON test reports |
| 118 | pytest-tornasync | 324,443 | py.test plugin for testing Python 3.5+ Tornado code |
| 119 | pytest-loop | 321,529 | pytest plugin for looping tests |
| 120 | pytest-slack | 318,232 | pytest to Slack reporting plugin |
| 121 | pytest-unused-fixtures | 317,150 | A pytest plugin to list unused fixtures after a test run. |
| 122 | pytest-astropy-header | 314,167 | pytest plugin to add diagnostic information to the header of the test output |
| 123 | pytest-mock-resources | 312,380 | A pytest plugin for easily instantiating reproducible mock resources. |
| 124 | pytest-xprocess | 307,612 | A pytest plugin for managing processes across test runs. |
| 125 | pytest-astropy | 303,718 | Meta-package containing dependencies for testing |
| 126 | pytest-loguru | 302,970 | pytest Loguru |
| 127 | pytest-markdown-docs | 300,279 | Run markdown code fences through pytest |
| 128 | pytest-hypothesis | 288,845 | 404 |
| 129 | pytest-structlog | 286,541 | Structured logging assertions |
| 130 | pytest-twisted | 285,869 | A twisted plugin for pytest. |
| 131 | pytest-cython | 281,417 | A plugin for testing Cython extension modules. |
| 132 | pytest-cpp | 277,298 | Use pytest’s runner to discover and execute C++ tests |
| 133 | pytest-mysql | 276,115 | MySQL process and client fixtures for pytest |
| 134 | pytest-integration | 273,440 | Organizing pytests by integration or not |
| 135 | pytest-cmake | 269,703 | Provide CMake module for pytest |
| 136 | pytest-excel | 266,185 | pytest plugin for generating excel reports |
| 137 | pytest-redis | 265,492 | Redis fixtures and fixture factories for pytest. |
| 138 | pytest-logger | 257,462 | Plugin configuring handlers for loggers from Python logging module. |
| 139 | pytest-insta | 252,375 | A practical snapshot testing plugin for pytest |
| 140 | pytest-emoji | 247,486 | A pytest plugin that adds emojis to your test result report |
| 141 | pytest-skip-slow | 244,208 | A pytest plugin to skip @pytest.mark.slow tests by default. |
| 142 | pytest-console-scripts | 241,463 | pytest plugin for testing console scripts |
| 143 | pytest-threadleak | 240,664 | Detects thread leaks |
| 144 | pytest-antilru | 239,801 | Bust functools.lru_cache when running pytest to avoid test pollution |
| 145 | pytest-helpers-namespace | 230,571 | pytest Helpers Namespace Plugin |
| 146 | pytest-run-parallel | 230,523 | A simple pytest plugin to run tests concurrently |
| 147 | pytest-xvfb | 229,227 | A pytest plugin to run Xvfb (or Xephyr/Xvnc) for tests. |
| 148 | pytest-shutil | 220,856 | A goodie-bag of unix shell and environment tools for py.test |
| 149 | pytestarch | 219,634 | Test framework for software architecture based on imports between modules |
| 150 | allure-pytest-bdd | 217,635 | Allure pytest-bdd integration |
| 151 | pytest-spec | 212,637 | Library pytest-spec is a pytest plugin to display test execution output like a SPECIFICATION. |
| 152 | pytest-responses | 203,099 | py.test integration for responses |
| 153 | flake8-pytest-style | 201,433 | A flake8 plugin checking common style issues or inconsistencies with pytest-based tests. |
| 154 | pytest-incremental | 196,626 | an incremental test runner (pytest plugin) |
| 155 | pytest-print | 196,546 | pytest-print adds the printer fixture you can use to print messages to the user (directly to the pytest runner, not stdout) |
| 156 | pytest-tap | 196,276 | Test Anything Protocol (TAP) reporting plugin for pytest |
| 157 | pytest-reporter | 194,218 | Generate pytest reports with templates |
| Error: project pytest-hot-reloading, Summary is None | |||
| 158 | pytest-hot-reloading | 189,025 | |
| 159 | pytest-ruff | 188,749 | pytest plugin to check ruff requirements. |
| 160 | pytest-custom-report | 188,480 | Configure the symbols displayed for test outcomes |
| 161 | pytest-codeblocks | 186,361 | Test code blocks in your READMEs |
| 162 | pytest-playwright-asyncio | 185,646 | A pytest wrapper with async fixtures for Playwright to automate web browsers |
| 163 | pytest-logging | 181,547 | Configures logging and allows tweaking the log level with a py.test flag |
| 164 | pytest-reraise | 180,427 | Make multi-threaded pytest test cases fail when they should |
| 165 | pytest-reporter-html1 | 180,195 | A basic HTML report template for pytest |
| 166 | pytest-grpc | 179,974 | pytest plugin for grpc |
| 167 | pytest-runtime-xfail | 179,931 | Call runtime_xfail() to mark running test as xfail. |
| 168 | pytest-item-dict | 177,248 | Get a hierarchical dict of session.items |
| 169 | pytest-xml | 176,582 | Create simple XML results for parsing |
| 170 | pytest-fail-slow | 176,356 | Fail tests that take too long to run |
| 171 | pytest-ignore-test-results | 175,948 | A pytest plugin to ignore test results. |
| 172 | pytest-embedded-jtag | 172,555 | Make pytest-embedded plugin work with JTAG. |
| 173 | tdd-guard-pytest | 168,873 | pytest plugin for TDD Guard - enforces Test-Driven Development principles |
| 174 | pytest-container | 167,086 | pytest fixtures for writing container based tests |
| 175 | pytest-jira-xray | 164,470 | pytest plugin to integrate tests with JIRA XRAY |
| 176 | pytest-circleci-parallelized | 161,073 | Parallelize pytest across CircleCI workers. |
| 177 | pytest-raises | 159,704 | An implementation of pytest.raises as a pytest.mark fixture |
| 178 | pytest-embedded-serial | 157,907 | Make pytest-embedded plugin work with Serial. |
| 179 | pytest-httpbin | 157,747 | Easily test your HTTP library against a local copy of httpbin |
| 180 | pytest-black | 157,185 | A pytest plugin to enable format checking with black |
| 181 | pytest-rng | 156,336 | Fixtures for seeding tests and making randomness reproducible |
| 182 | pytest-depends | 155,474 | Tests that depend on other tests |
| 183 | pytest-operator | 152,528 | Fixtures for Charmed Operators |
| 184 | pytest-rich | 143,551 | Leverage rich for richer test session output |
| 185 | pytest-embedded-qemu | 143,293 | Make pytest-embedded plugin work with QEMU. |
| 186 | allure-pytest-default-results | 143,058 | Generate default “unknown” results to show in Allure Report if test case does not run |
| 187 | pytest-httpx2 | 140,866 | A pytest plugin for mocking out httpx2 using respx. |
| 188 | pytest-beartype-tests | 139,866 | pytest plugin that applies @beartype to every collected test function. |
| 189 | qase-pytest | 135,186 | Qase pytest Plugin for Qase TestOps and Qase Report |
| 190 | pytest-deepassert | 133,296 | A pytest plugin for enhanced assertion reporting with detailed diffs |
| 191 | pytest-jira | 127,630 | py.test JIRA integration plugin, using markers |
| 192 | pytest-embedded-serial-esp | 127,201 | Make pytest-embedded plugin work with Espressif target boards. |
| 193 | pytest-cagoule | 127,047 | pytest plugin to only run tests affected by changes |
| 194 | pytest-progress | 124,223 | pytest plugin for instant test progress status |
| 195 | pytest-datafiles | 123,874 | py.test plugin to create a ’tmp_path’ containing predefined files/directories. |
| 196 | pytest-testrail | 123,329 | A pytest plugin for creating TestRail runs and adding results |
| 197 | pytest-embedded-idf | 121,054 | Make pytest-embedded plugin work with ESP-IDF. |
| 198 | pytest-parametrization | 114,571 | Simpler PyTest parametrization |
| 199 | pytest-monitor | 113,711 | pytest plugin for analyzing resource usage. |
| 200 | pytest-schema | 113,396 | 👍 Validate return values against a schema-like object in testing |
Current process is based on hugovk’s Top PyPI Packages.
Package data is filtered for “pytest”.
There’s also a filter for deprecated and unmaintained plugins.
See source code.