matplotlib.testing
matplotlib.testing
Вспомогательные функции для тестирования.
- 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=None, stdout=None, stderr=None, check=False, text=True, capture_output=False)[source]
-
Создание и запуск дочернего процесса.
Упрощенный обёртку вокруг
subprocess.run, предназначенный для тестирования. Будет отмечать сбои fork() на Cygwin как ожидаемые ошибки: не является успехом, но также не указывает на проблему в коде.- Параметры:
-
- argsсписок строк
- envсловарь [строка, строка]
- timeoutчисло с плавающей запятой
- stdout, stderr
- checkлогическое значение
- textлогическое значение
-
Также называется
universal_newlinesв subprocess. Я выбрал это имя, так как основной эффект заключается в возвращении байтов (False) вместо строк (True), хотя также пытается нормализовать переводы строк в разных платформах. - capture_outputлогическое значение
-
Устанавливает stdout и stderr в subprocess.PIPE
- Возвращает:
-
- procsubprocess.Popen
- Возбуждает:
-
- pytest.xfail
-
Если платформа Cygwin, и subprocess сообщает о сбое fork().
См. также
- matplotlib.testing.subprocess_run_helper(func, *args, timeout, extra_env=None)[source]
-
Запуск функции в дочернем процессе.
- Параметры:
-
- funcфункция
-
Функция, которая должна быть запущена. Она должна быть в модуле, который можно импортировать.
- *argsстрока
-
Любые дополнительные аргументы командной строки, которые необходимо передать в первый аргумент
subprocess.run. - extra_envсловарь [строка, строка]
-
Любые дополнительные переменные среды, которые необходимо установить для дочернего процесса.
matplotlib.testing.compare
Утилиты для сравнения результатов изображений.
- matplotlib.testing.compare.calculate_rms(expected_image, actual_image)[source]
-
Вычисление ошибок на каждый пиксель, затем вычисление среднеквадратического отклонения (RMS).
- matplotlib.testing.compare.comparable_formats()[source]
-
Возвращает список форматов файлов, которые
compare_imagesможет сравнивать на этой системе.- Возвращает:
-
- список строк
-
Например,
['png', 'pdf', 'svg', 'eps'].
- matplotlib.testing.compare.compare_images(expected, actual, tol, in_decorator=False)[source]
-
Сравнение двух файлов «изображений», проверяя различия в пределах заданной толерантности.
Два указанных имени файлов могут указывать на файлы, которые можно преобразовать в PNG с помощью словаря
converter. Базовое среднеквадратическое отклонение (RMS) рассчитывается с помощью функцииcalculate_rms.- Параметры:
-
- expectedстрока
-
Имя файла ожидаемого изображения.
- actualстрока
-
Имя файла фактического изображения.
- tolчисло с плавающей запятой
-
Допустимая погрешность (различие значений цвета, где 255 — максимальное различие). Тест завершается неудачей, если среднее различие пикселей превышает это значение.
- in_decoratorлогическое значение
-
Определяет формат вывода. Если вызывается из декоратора image_comparison, это должно быть True. (по умолчанию=False)
- Возвращает:
-
- None или словарь или строка
-
Возвращает None, если изображения равны в рамках заданной толерантности.
Если изображения отличаются, возвращаемое значение зависит от in_decorator. Если in_decorator имеет значение true, возвращается словарь со следующими элементами:
- 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)[source]
-
Декоратор для тестовых случаев, которые генерируют и сравнивают две фигуры.
Декорируемая функция должна принимать два ключевых аргумента, fig_test и fig_ref, и отрисовывать тестовые и эталонные изображения на них. После возвращения функции изображения сохраняются и сравниваются.
Этот декоратор следует предпочитать декоратору
image_comparisonв возможных случаях, чтобы избежать чрезмерного разрастания тестового набора.- Параметры:
-
- extensionsсписок, по умолчанию: ["png", "pdf", "svg"]
-
Расширения для проверки.
- tolчисло с плавающей точкой
-
Пороговое значение 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 или список строк
-
Список расширений для проверки, например
['png', 'pdf'].Если None, используется все поддерживаемые расширения: png, pdf и svg.
При тестировании одного расширения, оно может быть непосредственно включено в имена, переданные в baseline_images. В этом случае, extensions не должно быть установлено.
Чтобы избежать чрезмерного разрастания тестового набора, мы включаем только выходы
svgилиpdf, если тест явно использует функцию, зависящую от этого бэкэнда (см. также декораторcheck_figures_equalдля этой цели). - tolчисло с плавающей точкой, по умолчанию: 0
-
Пороговое значение RMS, выше которого тест считается проваленным.
Из-за ожидаемых незначительных различий в расчётах с плавающей точкой, на 32-битных системах к этому порогу добавляется 0.06.
- freetype_versionстрока или кортеж
-
Ожидаемая версия freetype или диапазон версий для успешного прохождения теста.
- remove_textбулево значение
-
Удаление заголовка и текста меток из фигуры перед сравнением. Это полезно для создания эталонных изображений, независимых от вариаций в рендеринге текста между различными версиями FreeType.
Это не удаляет другой, более намеренный текст, такой как легенды и аннотации.
- savefig_kwargсловарь
-
Дополнительные аргументы, которые передаются в метод savefig.
- styleстрока, словарь или список
-
Дополнительный(е) стиль(и) для применения к тестовому изображению. Сам тест также может применять дополнительные стили по желанию. По умолчанию
["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/3.8.4/api/testing_api.html