Skip to content

A pytest plugin to facilitate image comparison for Matplotlib figures

License

Notifications You must be signed in to change notification settings

matplotlib/pytest-mpl

Folders and files

NameName
Last commit message
Last commit date
Jan 9, 2024
Jan 2, 2024
Feb 13, 2024
Feb 14, 2024
Sep 14, 2022
Aug 5, 2024
Oct 7, 2023
Feb 14, 2024
Jun 25, 2015
Dec 13, 2020
Apr 6, 2023
Jun 15, 2022
Dec 31, 2021
Jan 9, 2024
Dec 31, 2021
Dec 16, 2023

Repository files navigation

pytest-mpl

pytest-mpl is a pytest plugin to facilitate image comparison for Matplotlib figures.

For each figure to test, an image is generated and then subtracted from an existing reference image. If the RMS of the residual is larger than a user-specified tolerance, the test will fail. Alternatively, the generated image can be hashed and compared to an expected value.

For more information, see the pytest-mpl documentation.

Installation

pip install pytest-mpl

For detailed instructions, see the installation guide in the pytest-mpl docs.

Usage

First, write test functions that create a figure. These image comparison tests are decorated with @pytest.mark.mpl_image_compare and return the figure for testing:

import matplotlib.pyplot as plt
import pytest

@pytest.mark.mpl_image_compare
def test_plot():
    fig, ax = plt.subplots()
    ax.plot([1, 2])
    return fig

Then, generate reference images by running the test suite with the --mpl-generate-path option:

pytest --mpl-generate-path=baseline

Then, run the test suite as usual, but pass --mpl to compare the returned figures to the reference images:

pytest --mpl

By also passing --mpl-generate-summary=html, a summary of the image comparison results will be generated in HTML format:

html all html filter html result

For more information on how to configure and use pytest-mpl, see the pytest-mpl documentation.

Contributing

pytest-mpl is a community project maintained for and by its users. There are many ways you can help!

  • Report a bug or request a feature on GitHub
  • Improve the documentation or code