Spec-Zone.ru › Matplotlib

matplotlib.testing

matplotlib.testing

Вспомогательные функции для тестирования.

matplotlib.testing.ipython_in_subprocess(requested_backend_or_gui_framework, all_expected_backends)[исходный код]
matplotlib.testing.is_ci_environment()[исходный код]
matplotlib.testing.set_font_settings_for_testing()[исходный код]
matplotlib.testing.set_reproducibility_for_testing()[исходный код]
matplotlib.testing.setup()[исходный код]
matplotlib.testing.subprocess_run_for_testing(command, env=None, timeout=60, stdout=None, stderr=None, check=False, text=True, capture_output=False)[исходный код]

Создать и запустить подпроцесс.

Тонкая обёртка над subprocess.run, предназначенная для тестирования. Ошибки fork() в Cygwin будут помечены как ожидаемые сбои: это не успех, но и не признак проблемы в коде.

Параметры:
argslist of str
envdict[str, str]
timeoutfloat
stdout, stderr
checkbool
textbool

Также называется universal_newlines в subprocess. Я выбрал это название, поскольку основной эффект — возврат байтов (False) вместо строк (True), хотя эта настройка также пытается нормализовать символы перевода строки на разных платформах.

capture_outputbool

Установить stdout и stderr в subprocess.PIPE

Возвращает:
procsubprocess.Popen
Вызывает исключение:
pytest.xfail

Если платформа — Cygwin и subprocess сообщает об ошибке fork().

См. также

subprocess.run
matplotlib.testing.subprocess_run_helper(func, *args, timeout, extra_env=None)[исходный код]

Запустить функцию в подпроцессе.

Параметры:
funcfunction

Функция для запуска. Она должна находиться в импортируемом модуле.

*argsstr

Любые дополнительные аргументы командной строки, передаваемые в качестве первого аргумента в subprocess.run.

extra_envdict[str, str]

Любые дополнительные переменные среды, которые нужно задать для подпроцесса.

matplotlib.testing.compare

Утилиты для сравнения результатов изображений.

matplotlib.testing.compare.calculate_rms(expected_image, actual_image)[исходный код]

Вычислить попиксельные ошибки, а затем среднеквадратичную ошибку.

matplotlib.testing.compare.comparable_formats()[исходный код]

Вернуть список форматов файлов, которые compare_images может сравнивать в этой системе.

Возвращает:
list of str

Например, ['png', 'pdf', 'svg', 'eps'].

matplotlib.testing.compare.compare_images(expected, actual, tol, in_decorator=False)[исходный код]

Сравнить два файла «изображений», проверяя, что различия не превышают заданный допуск.

Указанные имена файлов могут ссылаться на файлы, которые можно преобразовать в PNG с помощью словаря converter. RMS вычисляется функцией calculate_rms.

Параметры:
expectedstr

Имя файла ожидаемого изображения.

actualstr

Имя файла фактического изображения.

tolfloat

Допуск (разница значений цвета, где 255 — максимальная разница). Тест завершается неудачей, если средняя разница между пикселями превышает это значение.

in_decoratorbool

Определяет формат вывода. Если функция вызвана из декоратора image_comparison, это значение должно быть True. (по умолчанию=False)

Возвращает:
None or dict or str

Возвращает None, если изображения совпадают в пределах заданного допуска.

Если изображения различаются, возвращаемое значение зависит от in_decorator. Если in_decorator имеет значение true, возвращается dict со следующими элементами:

  • rms: RMS разницы между изображениями.
  • expected: имя файла ожидаемого изображения.
  • actual: имя файла фактического изображения.
  • diff_image: имя файла изображения с разницей.
  • tol: допуск сравнения.

В противном случае возвращается удобочитаемое многострочное строковое представление этой информации.

Примеры

img1 = "./baseline/plot.png"
img2 = "./output/plot.png"
compare_images(img1, img2, 0.001)

matplotlib.testing.decorators

matplotlib.testing.decorators.check_figures_equal(*, extensions=('png', 'pdf', 'svg'), tol=0)[исходный код]

Декоратор для тестовых случаев, которые создают и сравнивают два рисунка.

Декорированная функция должна принимать два именованных аргумента — fig_test и fig_ref — и строить на них тестовое и эталонное изображения. После возврата функции рисунки сохраняются и сравниваются.

По возможности следует предпочитать этот декоратор декоратору image_comparison, чтобы избежать чрезмерного увеличения размера набора тестов.

Параметры:
extensionslist, default: ["png", "pdf", "svg"]

Проверяемые расширения.

tolfloat

Порог RMS, выше которого тест считается проваленным.

Вызывает исключение:
RuntimeError

Если внутри тестовой функции создаются новые рисунки, которые впоследствии не закрываются.

Примеры

Проверить, что вызов Axes.plot с одним аргументом строит график этого аргумента относительно [0, 1, 2, ...]:

@check_figures_equal()
def test_plot(fig_test, fig_ref):
    fig_test.subplots().plot([1, 3, 5])
    fig_ref.subplots().plot([0, 1, 2], [1, 3, 5])
matplotlib.testing.decorators.image_comparison(baseline_images, extensions=None, tol=0, freetype_version=None, remove_text=False, savefig_kwarg=None, style=('classic', '_classic_test_patch'))[исходный код]

Сравнить изображения, созданные тестом, с изображениями, указанными в baseline_images. Они должны соответствовать друг другу, иначе будет вызвано исключение ImageComparisonFailure.

Параметры:
baseline_imageslist or None

Список строк, задающих имена изображений, созданных вызовами Figure.savefig.

Если значение равно None, тестовая функция должна использовать фикстуру baseline_images — в качестве параметра или с помощью pytest.mark.usefixtures. Это значение разрешено только при использовании pytest.

extensionsNone or list of str

Список проверяемых расширений, например ['png', 'pdf'].

Если значение равно None, по умолчанию используются все поддерживаемые расширения: png, pdf и svg.

При проверке одного расширения его можно непосредственно включить в имена, передаваемые в baseline_images. В этом случае параметр extensions задавать не следует.

Чтобы избежать чрезмерного увеличения размера набора тестов, мы включаем результаты svg или pdf только в том случае, если тест явно проверяет функцию, зависящую от этого бэкенда (см. также декоратор check_figures_equal, предназначенный для этой цели).

tolfloat, default: 0

Порог RMS, выше которого тест считается проваленным.

Из-за ожидаемых небольших различий в вычислениях с плавающей точкой в 32-разрядных системах к этому порогу добавляется 0.06.

freetype_versionstr or tuple

Ожидаемая версия или диапазон версий freetype, при которых тест должен пройти.

remove_textbool

Удалить заголовок и текст делений с рисунка перед сравнением. Это полезно, чтобы эталонные изображения не зависели от различий в отображении текста между версиями FreeType.

Другой текст, добавленный намеренно, например легенды и аннотации, не удаляется.

savefig_kwargdict

Необязательные аргументы, передаваемые методу savefig.

stylestr, dict, or list

Необязательный стиль или стили, применяемые к тесту изображений. При необходимости тест может также применять дополнительные стили. По умолчанию используется ["classic", "_classic_test_patch"].

matplotlib.testing.decorators.remove_ticks_and_titles(figure)[исходный код]

matplotlib.testing.exceptions

exceptionmatplotlib.testing.exceptions.ImageComparisonFailure[исходный код]

Базовые классы: AssertionError

Вызовите это исключение, чтобы отметить тест как сравнение двух изображений.

Тестирование с необязательными зависимостями

Подробнее о фикстурах см. в разделе фикстуры pytest.

matplotlib.testing.conftest.pd()

Фикстура для импорта и настройки pandas. При использовании этой фикстуры тест пропускается, если pandas не установлен. Используйте эту фикстуру вместо импорта pandas в файлах тестов.

Примеры

Запросите фикстуру pandas, передав pd в качестве аргумента теста

def test_matshow_pandas(pd):

    df = pd.DataFrame({'x':[1,2,3], 'y':[4,5,6]})
    im = plt.figure().subplots().matshow(df)
    np.testing.assert_array_equal(im.get_array(), df)
matplotlib.testing.conftest.xr()

Фикстура для импорта xarray, благодаря которой тест пропускается, если xarray не установлен. Используйте эту фикстуру вместо импорта xrray в файлах тестов.

Примеры

Запросите фикстуру xarray, передав xr в качестве аргумента теста

def test_imshow_xarray(xr):

    ds = xr.DataArray(np.random.randn(2, 3))
    im = plt.figure().subplots().imshow(ds)
    np.testing.assert_array_equal(im.get_array(), ds)

© 2012–2026 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/stable/api/testing_api.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API