This is intended to find the most popular pytest plugins, as plugins usually have “pytest” in the name.
The list is generated from hugovk’s Top PyPI Packages, which is filtered for “pytest”. Many popular packages, such as “hypothesis”, will therefore not be in the list.
An additional filter was added in Oct, 2024 to remove deprecated plugins.
There’s no point in highlighting plugins that the maintainers don’t want you to use.
I’ll be reviewing the list and add new items to the deprecated filter in upcoming weeks.
See source code for deprecation list, if you’re curious.
Counts are the number of downloads over 30 days.
The list
Data last updated: 2024-11-01 12:27:36
# | Package | Downloads | Summary |
---|---|---|---|
1 | pytest-cov | 55,287,353 | Pytest plugin for measuring coverage. |
2 | pytest-mock | 23,024,818 | Thin-wrapper around the mock package for easier use with pytest |
3 | pytest-xdist | 19,442,800 | pytest xdist plugin for distributed testing, most importantly across multiple CPUs |
4 | pytest-metadata | 12,797,856 | pytest plugin for test session metadata |
5 | pytest-asyncio | 12,379,331 | Pytest support for asyncio |
6 | pytest-html | 9,267,807 | pytest plugin for generating HTML reports |
7 | pytest-timeout | 7,028,826 | pytest plugin to abort hanging tests |
8 | pytest-rerunfailures | 6,295,760 | pytest plugin to re-run tests to eliminate flaky failures |
9 | pytest-random-order | 4,341,088 | Randomise the order in which pytest tests are run with some control over the randomness |
10 | pytest-localserver | 4,090,495 | pytest plugin to test server connections locally. |
11 | pytest-django | 3,899,885 | A Django plugin for pytest. |
12 | pytest-randomly | 3,847,511 | Pytest plugin to randomly order tests and control random.seed. |
13 | pytest-split | 3,427,599 | Pytest plugin which splits the test suite to equally sized sub suites based on test execution time. |
14 | pytest-json-report | 3,011,998 | A pytest plugin to report test results as JSON files |
15 | pytest-benchmark | 2,450,862 | A pytest fixture for benchmarking code. It will group the tests into rounds that are calibrated to the chosen timer. |
16 | pytest-env | 2,447,952 | pytest plugin that allows you to add environment variables. |
17 | pytest-error-for-skips | 1,996,021 | Pytest plugin to treat skipped tests a test failure |
18 | pytest-repeat | 1,919,707 | pytest plugin for repeating tests |
19 | pytest-custom-exit-code | 1,841,741 | Exit pytest test session with custom exit code in different scenarios |
20 | allure-pytest | 1,805,565 | Allure pytest integration |
21 | pytest-order | 1,791,488 | pytest plugin to run your tests in a specific order |
22 | pytest-sugar | 1,752,564 | pytest-sugar is a plugin for pytest that changes the default look and feel of pytest (e.g. progressbar, show tests that fail instantly). |
23 | pytest-base-url | 1,680,955 | pytest plugin for URL based testing |
24 | pytest-httpx | 1,662,963 | Send responses to httpx. |
25 | pytest-playwright | 1,463,528 | A pytest wrapper with fixtures for Playwright to automate web browsers |
26 | pytest-ordering | 1,435,418 | pytest plugin to run your tests in a specific order |
27 | pytest-check | 1,419,680 | A pytest plugin that allows multiple failures per test. |
28 | pytest-bdd | 1,291,448 | BDD for pytest |
29 | pytest-instafail | 1,198,206 | pytest plugin to show failures instantly |
30 | pytest-assume | 1,096,397 | A pytest plugin that allows multiple failures per test |
31 | pytest-subtests | 1,076,253 | unittest subTest() support and subtests fixture |
32 | pytest-remotedata | 839,158 | Pytest plugin for controlling remote data access. |
33 | pytest-doctestplus | 831,366 | Pytest plugin with advanced doctest features. |
34 | pytest-aiohttp | 791,837 | Pytest plugin for aiohttp support |
35 | pytest-filter-subpackage | 789,355 | Pytest plugin for filtering based on sub-packages |
36 | pytest-httpserver | 762,932 | pytest-httpserver is a httpserver for pytest |
37 | pytest-socket | 757,393 | Pytest Plugin to disable socket calls during tests |
38 | pytest-arraydiff | 724,207 | pytest plugin to help with comparing array output from tests |
39 | pytest-astropy | 708,591 | Meta-package containing dependencies for testing |
40 | pytest-astropy-header | 706,693 | pytest plugin to add diagnostic information to the header of the test output |
41 | pytest-mypy | 667,100 | Mypy static type checker plugin for Pytest |
42 | pytest-dotenv | 660,000 | A py.test plugin that parses environment files before running tests |
43 | pytest-flask | 639,773 | A set of py.test fixtures to test Flask applications. |
44 | pytest-dependency | 629,538 | Manage dependencies of tests |
45 | pytest-openfiles | 626,056 | Pytest plugin for detecting inadvertent open file handles |
46 | pytest-azurepipelines | 582,698 | Formatting PyTest output for Azure Pipelines UI |
47 | pytest-icdiff | 511,809 | use icdiff for better error messages in pytest assertions |
48 | pytest-postgresql | 511,056 | Postgresql fixtures and fixture factories for Pytest. |
49 | pytest-testinfra | 479,319 | Test infrastructures |
50 | pytest-ansible | 475,248 | Plugin for pytest to simplify calling ansible modules from tests or fixtures |
51 | pytest-deadfixtures | 468,582 | A simple plugin to list unused fixtures in pytest |
52 | pytest-freezegun | 463,625 | Wrap tests with fixtures in freeze_time |
53 | pytest-snapshot | 460,420 | A plugin for snapshot testing with pytest. |
54 | pytest-flake8 | 440,317 | pytest plugin to check FLAKE8 requirements |
55 | pytest-cases | 428,743 | Separate test code from test cases in pytest. |
56 | pytest-lazy-fixture | 414,782 | It helps to use fixtures in pytest.mark.parametrize |
57 | pytest-github-actions-annotate-failures | 390,182 | pytest plugin to annotate failed tests with a workflow command for GitHub Actions |
58 | pytest-nunit | 366,255 | A pytest plugin for generating NUnit3 test result XML output |
59 | pytest-factoryboy | 354,728 | Factory Boy support for pytest. |
60 | pytest-clarity | 345,572 | A plugin providing an alternative, colourful diff output for failing assertions. |
61 | pytest-trio | 315,880 | Pytest plugin for trio |
62 | pytest-djangoapp | 300,296 | Nice pytest plugin to help you with Django pluggable application testing. |
63 | pytest-profiling | 284,647 | Profiling plugin for py.test |
64 | pytest-variables | 281,531 | pytest plugin for providing variables to tests/fixtures |
65 | pytest-datadir | 276,101 | pytest plugin for test data directories and files |
66 | pytest-watch | 272,974 | Local continuous test runner with pytest and watchdog. |
67 | pytest-timestamper | 271,859 | Pytest plugin to add a timestamp prefix to the pytest output |
68 | pytest-pylint | 248,724 | pytest plugin to check source code with pylint |
69 | pytest-parametrization | 243,545 | Simpler PyTest parametrization |
70 | pytest-celery | 242,867 | Pytest plugin for Celery |
71 | pytest-spark | 242,801 | pytest plugin to run the tests with support of pyspark. |
72 | pytest-reportportal | 232,792 | Agent for Reporting results of tests to the Report Portal |
73 | pytest-docker | 231,579 | Simple pytest fixtures for Docker and Docker Compose based tests |
74 | pytest-retry | 228,711 | Adds the ability to retry flaky tests in CI environments |
75 | pytest-wake | 228,120 | None |
76 | pytest-selenium | 227,212 | pytest plugin for Selenium |
77 | pytest-subprocess | 224,731 | A plugin to fake subprocess for pytest |
78 | pytest-incremental | 220,722 | an incremental test runner (pytest plugin) |
79 | pytest-httpbin | 209,022 | Easily test your HTTP library against a local copy of httpbin |
80 | pytest-alembic | 207,683 | A pytest plugin for verifying alembic migrations. |
81 | pytest-qt | 193,152 | pytest support for PyQt and PySide applications |
82 | pytest-testmon | 179,088 | selects tests affected by changed files and methods |
83 | pytest-csv | 178,447 | CSV output for pytest. |
84 | pytest-testrail | 174,758 | pytest plugin for creating TestRail runs and adding results |
85 | pytest-tinybird | 170,570 | A pytest plugin to report test results to tinybird |
86 | pytest-reportlog | 159,686 | Replacement for the –resultlog option, focused in simplicity and extensibility |
87 | pytest-unordered | 155,868 | Test equality of unordered collections in pytest |
88 | pytest-md | 154,488 | Plugin for generating Markdown reports for pytest results |
89 | pytest-vcr | 154,255 | Plugin for managing VCR.py cassettes |
90 | pytest-memray | 145,362 | A simple plugin to use with pytest |
91 | pytest-helpers-namespace | 144,272 | Pytest Helpers Namespace Plugin |
92 | pytest-docker-tools | 144,156 | Docker integration tests for pytest |
93 | pytest-reporter | 141,276 | Generate Pytest reports with templates |
94 | pytest-shard | 138,877 | |
95 | pylint-pytest | 138,669 | A Pylint plugin to suppress pytest-related false positives. |
96 | pytest-logger | 137,671 | Plugin configuring handlers for loggers from Python logging module. |
97 | pytest-reraise | 134,922 | Make multi-threaded pytest test cases fail when they should |
98 | flake8-pytest-style | 134,138 | A flake8 plugin checking common style issues or inconsistencies with pytest-based tests. |
99 | pytest-flakefinder | 128,149 | Runs tests multiple times to expose flakiness. |
100 | pytest-recording | 123,636 | A pytest plugin that allows you recording of network interactions via VCR.py |
101 | pytest-faker | 120,000 | Faker integration with the pytest framework. |
102 | pytest-cpp | 117,697 | Use pytest’s runner to discover and execute C++ tests |
103 | pytest-tornasync | 115,188 | py.test plugin for testing Python 3.5+ Tornado code |
104 | pytest-shutil | 110,401 | A goodie-bag of unix shell and environment tools for py.test |
105 | pytest-reporter-html1 | 108,897 | A basic HTML report template for Pytest |
106 | pytest-insta | 106,518 | A practical snapshot testing plugin for pytest |
107 | pytest-freezer | 102,111 | Pytest plugin providing a fixture interface for spulec/freezegun |
108 | pytest-cache | 99,992 | pytest plugin with mechanisms for caching across test runs |
109 | pytest-grpc | 99,942 | pytest plugin for grpc |
110 | pytest-mpl | 99,249 | pytest plugin to help with testing figures output from Matplotlib |
111 | pytest-explicit | 98,293 | A Pytest plugin to ignore certain marked tests by default |
112 | pytest-depends | 97,009 | Tests that depend on other tests |
113 | pytest-isort | 96,789 | py.test plugin to check import ordering using isort |
114 | pytest-tap | 95,674 | Test Anything Protocol (TAP) reporting plugin for pytest |
115 | pytest-embedded | 89,735 | A pytest plugin that designed for embedded testing. |
116 | pytest-test-groups | 87,942 | A Pytest plugin for running a subset of your tests by splitting them in to equally sized groups. |
117 | pytest-describe | 87,937 | Describe-style plugin for pytest |
118 | pytest-embedded-serial | 87,437 | Make pytest-embedded plugin work with Serial. |
119 | pytest-embedded-idf | 86,041 | Make pytest-embedded plugin work with ESP-IDF. |
120 | pytest-embedded-serial-esp | 85,346 | Make pytest-embedded plugin work with Espressif target boards. |
121 | pytest-redis | 84,045 | Redis fixtures and fixture factories for Pytest. |
122 | pytest-embedded-qemu | 83,908 | Make pytest-embedded plugin work with QEMU. |
123 | pytest-emoji | 80,599 | A pytest plugin that adds emojis to your test result report |
124 | pytest-pretty | 79,673 | pytest plugin for printing summary data as I want it |
125 | pytest-json | 79,031 | Generate JSON test reports |
126 | pytest-timeouts | 78,662 | Linux-only Pytest plugin to control durations of various test case execution phases |
127 | pytest-harvest | 77,797 | Store data created during your pytest tests execution, and retrieve it at the end of the session, e.g. for applicative benchmarking purposes. |