Spec-Zone.ru › Matplotlib 3.8

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().

См. также

subprocess.run
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

Spec-Zone.ru

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