Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/adamchainz/pytest-reverse

Pytest plugin to reverse test order.
https://github.com/adamchainz/pytest-reverse

pytest

Last synced: about 2 months ago
JSON representation

Pytest plugin to reverse test order.

Lists

README

        

==============
pytest-reverse
==============

.. image:: https://img.shields.io/github/actions/workflow/status/adamchainz/pytest-reverse/main.yml?branch=main&style=for-the-badge
:target: https://github.com/adamchainz/pytest-reverse/actions?workflow=CI

.. image:: https://img.shields.io/pypi/v/pytest-reverse.svg?style=for-the-badge
:target: https://pypi.org/project/pytest-reverse/

.. image:: https://img.shields.io/badge/code%20style-black-000000.svg?style=for-the-badge
:target: https://github.com/psf/black

.. image:: https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white&style=for-the-badge
:target: https://github.com/pre-commit/pre-commit
:alt: pre-commit

Pytest plugin to reverse test order.

----

**Testing a Django project?**
Check out my book `Speed Up Your Django Tests `__ which covers loads of recommendations to write faster, more accurate tests.
I created pytest-reverse whilst working on the book!

----

Installation
============

Install with:

.. code-block:: bash

python -m pip install pytest-reverse

Python 3.8 to 3.12 supported.

Usage
=====

Pytest will automatically find the plugin and use it when you run ``pytest``.
You can reverse test order by passing the ``--reverse`` flag:

.. code-block:: bash

pytest --reverse

You can make this always apply by adding it to the ``addopts`` setting in your
``pytest.ini`` (or `other configuration
file `__):

.. code-block:: ini

[pytest]
addopts = --reverse

History
=======

I'm the creator and maintainer of
`pytest-randomly `__, a plugin
for randomly ordering tests. @thbde opened an issue there pointing to the paper
`Empirically revisiting the test independence
assumption `__, which covers
test reordering techniques. It turns out that reversal is nearly as effective
as randomization.

Test reversal is available `in Django's test
runner `__.
I figured such an option or plugin would exist for pytest already, but it
didn't, so I made it here.