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-03-01 07:34:08
| # | Package | Downloads | Summary |
|---|---|---|---|
| 1 | pytest-cov | 125,305,202 | pytest plugin for measuring coverage. Test and Code episode pytest-cov : The pytest plugin for measuring coverage |
| 2 | pytest-asyncio | 117,135,896 | pytest support for asyncio |
| 3 | pytest-xdist | 78,297,479 | pytest xdist plugin for distributed testing, most importantly across multiple CPUs |
| 4 | pytest-mock | 69,170,032 | Thin-wrapper around the mock package for easier use with pytest Test and Code episode pytest-mock : Mocking in pytest |
| 5 | pytest-timeout | 37,182,213 | pytest plugin to abort hanging tests |
| 6 | pytest-rerunfailures | 25,663,680 | pytest plugin to re-run tests to eliminate flaky failures |
| 7 | pytest-metadata | 24,408,102 | pytest plugin for test session metadata Test and Code episode pytest-metadata - provides access to test session metadata |
| 8 | pytest-json-ctrf | 22,842,493 | pytest plugin to generate json report in CTRF (Common Test Report Format) |
| 9 | hypothesis | 20,982,553 | The property-based testing library for Python Includes a small pytest plugin. |
| 10 | pytest-html | 17,563,741 | pytest plugin for generating HTML reports Test and Code episode pytest-html - a plugin that generates HTML reports for test results |
| 11 | pytest-env | 15,943,891 | pytest plugin that allows you to add environment variables. |
| 12 | pytest-django | 11,603,452 | A Django plugin for pytest. Test and Code episode pytest-django with Adam Johnson |
| 13 | pytest-split | 10,533,490 | pytest plugin which splits the test suite to equally sized sub suites based on test execution time. |
| 14 | pytest-repeat | 8,350,041 | pytest plugin for repeating tests Test and Code episode pytest-repeat - works fine on Python 3.14 |
| 15 | pytest-benchmark | 8,315,492 | A pytest fixture for benchmarking code. It will group the tests into rounds that are calibrated to the chosen timer. |
| 16 | pytest-socket | 7,601,339 | pytest Plugin to disable socket calls during tests |
| 17 | pytest-json-report | 7,564,182 | A pytest plugin to report test results as JSON files Seems no longer supported, but leaving here to recommend pytest-json-report-wip |
| 18 | pytest-unordered | 6,973,050 | Test equality of unordered collections in pytest |
| 19 | syrupy | 6,620,009 | pytest Snapshot Test Utility |
| 20 | pytest-custom-exit-code | 6,158,551 | Exit pytest test session with custom exit code in different scenarios |
| 21 | pytest-icdiff | 5,928,051 | use icdiff for better error messages in pytest assertions |
| 22 | pytest-instafail | 5,873,996 | pytest plugin to show failures instantly |
| 23 | pytest-base-url | 5,641,589 | pytest plugin for URL based testing |
| 24 | allure-pytest | 5,322,892 | Allure pytest integration |
| 25 | pytest-playwright | 5,170,972 | A pytest wrapper with fixtures for Playwright to automate web browsers |
| 26 | pytest-sugar | 5,112,898 | pytest-sugar is a plugin for pytest that changes the default look and feel of pytest (e.g. progressbar, show tests that fail instantly). |
| 27 | pytest-httpx | 5,064,018 | Send responses to httpx. |
| 28 | pytest-ordering | 5,037,417 | pytest plugin to run your tests in a specific order |
| 29 | pytest-randomly | 4,780,644 | pytest plugin to randomly order tests and control random.seed. |
| 30 | pytest-order | 4,041,347 | pytest plugin to run your tests in a specific order |
| 31 | pytest-postgresql | 3,991,269 | Postgresql fixtures and fixture factories for pytest. |
| 32 | pytest-subtests | 3,690,646 | unittest subTest() support and subtests fixture Test and Code episode Subtests in Python with unittest and pytest |
| 33 | pytest-dotenv | 3,685,182 | A py.test plugin that parses environment files before running tests |
| 34 | pytest-httpserver | 3,145,931 | pytest-httpserver is a httpserver for pytest |
| 35 | pytest-recording | 3,087,825 | A pytest plugin powered by VCR.py to record and replay HTTP traffic |
| 36 | pytest-retry | 3,020,640 | Adds the ability to retry flaky tests in CI environments |
| 37 | pytest-aiohttp | 3,018,940 | pytest plugin for aiohttp support |
| 38 | pytest-check | 2,954,706 | A pytest plugin that allows multiple failures per test. Test and Code episode pytest-check - allow multiple failures per test |
| 39 | pytest-homeassistant-custom-component | 2,801,887 | Experimental package to automatically extract test plugins for Home Assistant custom components |
| 40 | pytest-assume | 2,447,318 | A pytest plugin that allows multiple failures per test |
| 41 | pytest-dependency | 2,329,886 | Manage dependencies of tests |
| 42 | pytest-random-order | 2,284,243 | Randomise the order in which pytest tests are run with some control over the randomness |
| 43 | pytest-test-groups | 2,083,376 | A pytest plugin for running a subset of your tests by splitting them in to equally sized groups. |
| 44 | pytest-bdd | 2,050,511 | BDD for pytest |
| 45 | pytest-vcr | 2,025,627 | Plugin for managing VCR.py cassettes |
| 46 | pytest-github-actions-annotate-failures | 2,007,505 | pytest plugin to annotate failed tests with a workflow command for GitHub Actions |
| 47 | pytest-freezegun | 1,866,755 | Wrap tests with fixtures in freeze_time |
| 48 | pytest-profiling | 1,845,617 | Profiling plugin for py.test |
| 49 | pytest-timeouts | 1,828,904 | Linux-only pytest plugin to control durations of various test case execution phases |
| 50 | pytest-codspeed | 1,798,294 | pytest plugin to create CodSpeed benchmarks |
| 51 | pytest-snapshot | 1,755,451 | A plugin for snapshot testing with pytest. |
| 52 | pytest-celery | 1,750,171 | pytest plugin for Celery |
| 53 | pytest-factoryboy | 1,625,085 | Factory Boy support for pytest. |
| 54 | pytest-docker-tools | 1,610,018 | Docker integration tests for pytest |
| 55 | pytest-watcher | 1,540,853 | Automatically rerun your tests on file modifications |
| 56 | pytest-testmon | 1,526,670 | selects tests affected by changed files and methods |
| 57 | pytest-memray | 1,425,108 | A simple plugin to use with pytest |
| 58 | pytest-lazy-fixture | 1,280,740 | It helps to use fixtures in pytest.mark.parametrize |
| 59 | pytest-flask | 1,262,488 | A set of py.test fixtures to test Flask applications. |
| 60 | pytest-durations | 1,213,197 | pytest plugin reporting fixtures and test functions execution time. |
| 61 | pytest-docker | 1,181,569 | Simple pytest fixtures for Docker and Docker Compose based tests |
| 62 | pytest-datadir | 1,057,704 | pytest plugin for test data directories and files |
| 63 | pytest-flakefinder | 1,010,174 | Runs tests multiple times to expose flakiness. |
| 64 | pytest-find-dependencies | 922,621 | A pytest plugin to find dependencies between tests |
| 65 | pytest-race | 889,881 | Race conditions tester for pytest |
| 66 | pytest-pretty | 865,708 | pytest plugin for printing summary data as I want it |
| 67 | pytest-watch | 855,265 | Local continuous test runner with pytest and watchdog. |
| 68 | pytest-alembic | 841,571 | A pytest plugin for verifying alembic migrations. |
| 69 | pytest-freezer | 778,522 | pytest plugin providing a fixture interface for spulec/freezegun |
| 70 | pytest-testinfra | 767,645 | Test infrastructures |
| 71 | pytest-azurepipelines | 751,875 | Formatting PyTest output for Azure Pipelines UI |
| 72 | pytest-lazy-fixtures | 714,581 | Allows you to use fixtures in @pytest.mark.parametrize. |
| 73 | pytest-opentelemetry | 706,850 | A pytest plugin for instrumenting test runs via OpenTelemetry |
| 74 | pytest-sftpserver | 704,874 | py.test plugin to locally test sftp server connections. |
| 75 | pytest-ansible | 664,956 | Plugin for pytest to simplify calling ansible modules from tests or fixtures |
| 76 | pytest-cases | 655,209 | Separate test code from test cases in pytest. |
| 77 | pytest-deadfixtures | 605,247 | A simple plugin to list unused fixtures in pytest |
| 78 | pytest-examples | 599,593 | pytest plugin for testing examples in docstrings and markdown files. |
| 79 | pytest-reportportal | 592,977 | Agent for Reporting results of tests to the Report Portal |
| 80 | pytest-reportlog | 568,744 | Replacement for the –resultlog option, focused in simplicity and extensibility |
| 81 | pytest-nunit | 554,243 | A pytest plugin for generating NUnit3 test result XML output |
| 82 | pytest-doctestplus | 549,919 | pytest plugin with advanced doctest features. |
| 83 | pytest-qt | 545,262 | pytest support for PyQt and PySide applications |
| 84 | pytest-subprocess | 528,726 | A plugin to fake subprocess for pytest |
| 85 | pytest-plus | 499,847 | PyTest Plus Plugin :: extends pytest functionality |
| 86 | pytest-regressions | 486,887 | Easy to use fixtures to write regression tests. |
| 87 | pytest-mypy | 461,022 | A pytest Plugin for Mypy |
| 88 | pytest-pylint | 454,995 | pytest plugin to check source code with pylint |
| 89 | pytest-clarity | 454,653 | A plugin providing an alternative, colourful diff output for failing assertions. |
| 90 | pytest-trio | 450,877 | pytest plugin for trio |
| 91 | pytest-mpl | 442,485 | pytest plugin to help with testing figures output from Matplotlib |
| 92 | pytest-flake8 | 426,761 | pytest plugin to check FLAKE8 requirements |
| 93 | pytest-describe | 414,568 | Describe-style plugin for pytest |
| 94 | pytest-picked | 406,468 | Run the tests related to the changed files |
| 95 | pytest-variables | 405,198 | pytest plugin for providing variables to tests/fixtures |
| 96 | pytest-cache | 398,439 | pytest plugin with mechanisms for caching across test runs |
| 97 | pytest-shutil | 394,822 | A goodie-bag of unix shell and environment tools for py.test |
| 98 | pytest-mock-resources | 373,956 | A pytest plugin for easily instantiating reproducible mock resources. |
| 99 | pytest-remotedata | 360,116 | pytest plugin for controlling remote data access. |
| 100 | pytest-selenium | 356,422 | pytest plugin for Selenium |
| 101 | pytest-markdown-docs | 353,872 | Run markdown code fences through pytest |
| 102 | pytest-localserver | 350,646 | pytest plugin to test server connections locally. |
| 103 | pytest-spark | 344,991 | pytest plugin to run the tests with support of pyspark. |
| 104 | pylint-pytest | 341,480 | A Pylint plugin to suppress pytest-related false positives. |
| 105 | pytest-csv | 339,376 | CSV output for pytest. |
| 106 | pytest-md-report | 339,223 | 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-filter-subpackage | 329,238 | pytest plugin for filtering based on sub-packages |
| 108 | pytest-mysql | 324,493 | MySQL process and client fixtures for pytest |
| 109 | pytest-tornasync | 289,774 | py.test plugin for testing Python 3.5+ Tornado code |
| 110 | pytest-structlog | 284,104 | Structured logging assertions |
| 111 | pytest-cpp | 273,839 | Use pytest’s runner to discover and execute C++ tests |
| 112 | pytest-arraydiff | 266,617 | pytest plugin to help with comparing array output from tests |
| 113 | pytest-timestamper | 264,137 | pytest plugin to add a timestamp prefix to the pytest output |
| 114 | pytest-astropy | 264,127 | Meta-package containing dependencies for testing |
| 115 | pytest-astropy-header | 258,250 | pytest plugin to add diagnostic information to the header of the test output |
| 116 | pytest-loguru | 237,305 | pytest Loguru |
| 117 | pytest-reraise | 236,118 | Make multi-threaded pytest test cases fail when they should |
| 118 | pytest-console-scripts | 227,545 | pytest plugin for testing console scripts |
| 119 | pytest-md | 226,323 | Plugin for generating Markdown reports for pytest results Test and Code episode pytest-md and pytest-md-report: Markdown reports for pytest |
| 120 | pytest-mypy-plugins | 218,659 | pytest plugin for writing tests for mypy plugins |
| 121 | pytest-harvest | 215,603 | Store data created during your pytest tests execution, and retrieve it at the end of the session, e.g. for applicative benchmarking purposes. |
| 122 | pytest-regex | 211,716 | Select pytest tests with regular expressions |
| 123 | pytest-tornado | 210,813 | A py.test plugin providing fixtures and markers to simplify testing of asynchronous tornado applications. |
| 124 | pytest-skip-slow | 203,868 | A pytest plugin to skip @pytest.mark.slow tests by default. |
| 125 | pytest-twisted | 203,665 | A twisted plugin for pytest. |
| 126 | pytest-xvfb | 201,497 | A pytest plugin to run Xvfb (or Xephyr/Xvnc) for tests. |
| 127 | pytest-json | 200,010 | Generate JSON test reports |
| 128 | pytest-incremental | 199,516 | an incremental test runner (pytest plugin) |
| 129 | pytest-tagging | 199,431 | a pytest plugin to tag tests |
| 130 | pytest-redis | 198,294 | Redis fixtures and fixture factories for pytest. |
| 131 | pytest-helpers-namespace | 195,058 | pytest Helpers Namespace Plugin |
| 132 | pytest-logger | 194,894 | Plugin configuring handlers for loggers from Python logging module. |
| 133 | pytest-anyio | 189,462 | The pytest anyio plugin is built into anyio. You don’t need this package. |
| 134 | pytest-integration | 188,595 | Organizing pytests by integration or not |
| 135 | pytest-pep8 | 185,146 | pytest plugin to check PEP8 requirements |
| 136 | pytest-reporter | 176,495 | Generate pytest reports with templates |
| 137 | pytest-fixture-config | 176,410 | Fixture configuration utils for py.test |
| 138 | pytest-xprocess | 169,681 | A pytest plugin for managing processes across test runs. |
| 139 | flake8-pytest-style | 168,525 | A flake8 plugin checking common style issues or inconsistencies with pytest-based tests. |
| 140 | pytest-slack | 167,471 | pytest to Slack reporting plugin |
| 141 | pytest-reporter-html1 | 163,271 | A basic HTML report template for pytest |
| 142 | pytest-embedded-serial | 162,110 | Make pytest-embedded plugin work with Serial. |
| 143 | pytest-runtime-xfail | 161,911 | Call runtime_xfail() to mark running test as xfail. |
| 144 | pytest-excel | 160,721 | pytest plugin for generating excel reports |
| 145 | pytest-parametrization | 157,914 | Simpler PyTest parametrization |
| 146 | pytest-grpc | 156,456 | pytest plugin for grpc |
| 147 | pytest-embedded-serial-esp | 154,346 | Make pytest-embedded plugin work with Espressif target boards. |
| 148 | pytest-pytestrail | 148,044 | pytest plugin for interaction with TestRail |
| 149 | pytest-bazel | 147,120 | A pytest runner with bazel support |
| 150 | pytest-operator | 142,474 | Fixtures for Charmed Operators |
| 151 | pytest-black | 136,294 | A pytest plugin to enable format checking with black |
| 152 | pytest-jira-xray | 136,187 | pytest plugin to integrate tests with JIRA XRAY |
| 153 | pytest-webdriver | 134,864 | Selenium webdriver fixture for py.test |
| 154 | pytest-ruff | 133,945 | pytest plugin to check ruff requirements. |
| 155 | pytest-depends | 132,473 | Tests that depend on other tests |
| 156 | pytest-responses | 131,855 | py.test integration for responses |
| 157 | pytest-emoji | 131,812 | A pytest plugin that adds emojis to your test result report |
| 158 | pytest-rng | 130,494 | Fixtures for seeding tests and making randomness reproducible |
| 159 | pytest-insta | 129,164 | A practical snapshot testing plugin for pytest |
| 160 | pytest-html-merger | 129,161 | pytest HTML reports merging utility |
| 161 | pytest-deepassert | 122,908 | A pytest plugin for enhanced assertion reporting with detailed diffs |
| 162 | pytest-tap | 122,849 | Test Anything Protocol (TAP) reporting plugin for pytest |
| 163 | pytest-print | 117,278 | pytest-print adds the printer fixture you can use to print messages to the user (directly to the pytest runner, not stdout) |
| 164 | pytest-datafiles | 116,280 | py.test plugin to create a ’tmp_path’ containing predefined files/directories. |
| 165 | pytest-cmake | 114,360 | Provide CMake module for pytest |
| 166 | pytest-ignore-test-results | 114,326 | A pytest plugin to ignore test results. |
| 167 | allure-pytest-bdd | 114,176 | Allure pytest-bdd integration |
| 168 | pytestarch | 112,858 | Test framework for software architecture based on imports between modules |
| 169 | pytest-otel | 112,140 | OpenTelemetry plugin for pytest |
| 170 | pytest-embedded-jtag | 111,272 | Make pytest-embedded plugin work with JTAG. |
| 171 | pytest-golden | 111,044 | Plugin for pytest that offloads expected outputs to data files |
| 172 | pytest-schema | 110,715 | 👍 Validate return values against a schema-like object in testing |
| 173 | pytest-monitor | 107,410 | pytest plugin for analyzing resource usage. |
| 174 | pytest-archon | 106,427 | Rule your architecture like a real developer |
| 175 | qase-pytest | 106,325 | Qase pytest Plugin for Qase TestOps and Qase Report |
| 176 | pytest-isort | 103,669 | py.test plugin to check import ordering using isort |
| 177 | allure-pytest-default-results | 101,666 | Generate default “unknown” results to show in Allure Report if test case does not run |
| 178 | pytest-spec | 98,434 | Library pytest-spec is a pytest plugin to display test execution output like a SPECIFICATION. |
| 179 | pytest-fail-slow | 98,329 | Fail tests that take too long to run |
| 180 | pytest-testrail | 97,120 | A pytest plugin for creating TestRail runs and adding results |
| 181 | pytest-explicit | 96,089 | A pytest plugin to ignore certain marked tests by default |
| 182 | types-pytest-lazy-fixture | 95,069 | Typing stubs for pytest-lazy-fixture |
| 183 | pytest-container | 90,652 | pytest fixtures for writing container based tests |
| 184 | pytest-xdist-worker-stats | 90,455 | A pytest plugin to list worker statistics after a xdist run. |
| 185 | pytest-mpi | 90,258 | pytest plugin to collect information from tests |
| 186 | pytest-func-cov | 90,148 | pytest plugin for measuring function coverage |
| 187 | pytest-loop | 89,453 | pytest plugin for looping tests |
| 188 | pytest-fastapi-deps | 87,554 | A fixture which allows easy replacement of fastapi dependencies for testing |
| 189 | pytest-logging | 85,451 | Configures logging and allows tweaking the log level with a py.test flag |
| 190 | pytest-rich | 85,374 | Leverage rich for richer test session output |
| 191 | pytest-threadleak | 85,032 | Detects thread leaks |
| 192 | pytest-stub | 83,459 | Stub packages, modules and attributes. |
| 193 | pytest-integration-mark | 82,276 | Automatic integration test marking and excluding plugin for pytest |
| 194 | pytest-pudb | 81,947 | pytest PuDB debugger integration |
| 195 | pytest-aio | 81,141 | pytest plugin for testing async python code |
| 196 | pytest-reverse | 79,126 | pytest plugin to reverse test order. |
| 197 | pytest-embedded | 78,975 | A pytest plugin that designed for embedded testing. |
| 198 | pytest-pikachu | 78,374 | Show surprise when tests are passing |
| 199 | pytest-codeblocks | 77,437 | Test code blocks in your READMEs |
| 200 | pytest-async | 76,598 | pytest-async - Run your coroutine in event loop without decorator |
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.