matplotlib.testing
matplotlib.testing
Вспомогательные функции для тестирования.
- matplotlib.testing.ipython_in_subprocess(requested_backend_or_gui_framework, all_expected_backends)[source]
- matplotlib.testing.is_ci_environment()[source]
- matplotlib.testing.set_font_settings_for_testing()[source]
- matplotlib.testing.set_reproducibility_for_testing()[source]
- matplotlib.testing.setup()[source]
- matplotlib.testing.subprocess_run_for_testing(command, env=None, timeout=60, stdout=None, stderr=None, check=False, text=True, capture_output=False)[source]
Создание и запуск дочернего процесса.
Тонкий обертка вокруг
subprocess.run, предназначенный для тестирования. Будет отмечать сбои fork() в Cygwin как ожидаемые ошибки: не успех, но не указывая на проблему с кодом.- Parameters:
- argsсписок str
- envdict[str, str]
- timeoutfloat
- stdout, stderr
- checkbool
- textbool
Также называется
universal_newlinesв subprocess. Я выбрал это имя, поскольку основной эффект заключается в возвращении байтов (False) против str (True), хотя он также пытается нормализовать новые строки между платформами.- capture_outputbool
-
Устанавливает stdout и stderr в subprocess.PIPE
- Returns:
- procsubprocess.Popen
- Raises:
- pytest.xfail
Если платформа Cygwin, и subprocess сообщает об ошибке fork().
См. также
- matplotlib.testing.subprocess_run_helper(func, *args, timeout, extra_env=None)[source]
Выполнение функции в дочернем процессе.
- Parameters:
- funcфункция
-
Функция, которая будет выполнена. Она должна быть в модуле, который можно импортировать.
- *argsstr
-
Любые дополнительные аргументы командной строки, которые должны быть переданы в первом аргументе в
subprocess.run. - extra_envdict[str, str]
-
Любые дополнительные переменные среды, которые должны быть установлены для дочернего процесса.
matplotlib.testing.compare
Утилиты для сравнения результатов изображений.
- matplotlib.testing.compare.calculate_rms(expected_image, actual_image)[source]
-
Вычисляет ошибки по каждому пикселю, затем вычисляет среднеквадратическую ошибку.
- matplotlib.testing.compare.comparable_formats()[source]
-
Возвращает список форматов файлов, которые
compare_imagesможет сравнивать на данной системе.- Возвращает:
-
- list of str
-
Например,
['png', 'pdf', 'svg', 'eps'].
- matplotlib.testing.compare.compare_images(expected, actual, tol, in_decorator=False)[source]
-
Сравнивает два файла «изображения», проверяя различия в пределах заданной погрешности.
Два заданных имени файлов могут указывать на файлы, которые можно преобразовать в PNG с помощью словаря
converter. Базовая среднеквадратическая ошибка вычисляется с помощью функцииcalculate_rms.- Параметры:
-
- expectedstr
-
Имя файла ожидаемого изображения.
- actualstr
-
Имя файла фактического изображения.
- tolfloat
-
Погрешность (разница значений цвета, где 255 — максимальная разница). Тест завершается неудачей, если средняя разница пикселей превышает это значение.
- in_decoratorbool
-
Определяет формат вывода. Если вызывается из декоратора image_comparison, это должно быть True. (по умолчанию=False)
- Возвращает:
-
- None или dict или str
-
Возвращает None, если изображения равны в пределах заданной погрешности.
Если изображения отличаются, возвращаемое значение зависит от in_decorator. Если in_decorator равно true, возвращается словарь со следующими записями:
- 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)[source]
-
Декоратор для тестовых случаев, генерирующих и сравнивающих две фигуры.
Декорированная функция должна принимать два ключевых аргумента, fig_test и fig_ref, и рисовать тестовые и эталонные изображения на них. После возвращения функции фигуры сохраняются и сравниваются.
Этот декоратор следует предпочитать
image_comparisonпо возможности, чтобы размер набора тестов не увеличивался.- Параметры:
-
- extensionsсписок, по умолчанию: ["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'))[source]
-
Сравнение изображений, сгенерированных тестом, с теми, что указаны в baseline_images, которые должны соответствовать, иначе будет поднято исключение
ImageComparisonFailure.- Параметры:
-
- baseline_imagesсписок или None
-
Список строк, указывающих имена изображений, сгенерированных вызовами
Figure.savefig.Если None, тестовая функция должна использовать фикстуру
baseline_images, либо в качестве параметра, либо с помощьюpytest.mark.usefixtures. Это значение разрешено только при использовании pytest. - extensionsNone или список str
-
Список расширений для проверки, например,
['png', 'pdf'].Если None, используется по умолчанию все поддерживаемые расширения: png, pdf и svg.
При тестировании одного расширения, оно может быть включено непосредственно в имена, переданные в baseline_images. В этом случае extensions не должен быть установлен.
Для предотвращения чрезмерного увеличения размера набора тестов мы включаем только результаты
svgилиpdf, если тест явно использует функцию, зависящую от этого бэкенда (см. также декораторcheck_figures_equalдля этой цели). - tolfloat, по умолчанию: 0
-
Пороговое значение RMS, превышение которого считается неудачей теста.
Из-за ожидаемых небольших различий в вычислениях с плавающей запятой на 32-битных системах к этому порогу добавляется 0.06.
- freetype_versionstr или кортеж
-
Ожидаемая версия freetype или диапазон версий для успешного прохождения теста.
- remove_textbool
-
Удаление заголовка и меток с фигуры перед сравнением. Это полезно для того, чтобы эталонные изображения были независимы от изменений в отображении текста между различными версиями FreeType.
Это не удаляет другой, более преднамеренный, текст, такой как легенды и аннотации.
- savefig_kwargdict
-
Дополнительные аргументы, которые передаются в метод savefig.
- stylestr, dict или список
-
Дополнительные стили для изображения теста. Сам тест также может применять дополнительные стили по мере необходимости. По умолчанию
["classic", "_classic_test_patch"].
- matplotlib.testing.decorators.remove_ticks_and_titles(figure)[source]
matplotlib.testing.exceptions
- исключениеmatplotlib.testing.exceptions.ImageComparisonFailure[source]
-
Базовый класс:
AssertionErrorПоднимает это исключение, чтобы отметить тест как сравнение двух изображений.
© 2012–2023 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/stable/api/testing_api.html