matplotlib.testing
#
matplotlib.testing
#
用于测试的辅助函数。
- matplotlib.testing.ipython_in_subprocess(requested_backend_or_gui_framework, all_expected_backends)[源代码][源代码]#
- matplotlib.testing.subprocess_run_for_testing(command, env=None, timeout=60, stdout=None, stderr=None, check=False, text=True, capture_output=False)[源代码][源代码]#
创建并运行一个子进程。
围绕
subprocess.run
的薄包装,用于测试。在 Cygwin 上标记 fork() 失败为预期失败:不是成功,但也不表示代码有问题。
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)[源代码][源代码]#
比较两个“图像”文件,检查在容差范围内的差异。
两个给定的文件名可能指向可以通过
converter
字典转换为 PNG 的文件。底层的 RMS 是通过calculate_rms
函数计算的。- 参数:
- 预期str
预期图像的文件名。
- 实际str
实际图像的文件名。
- 容忍度浮动
容差(一个颜色值差异,其中255是最大差异)。如果平均像素差异大于此值,则测试失败。
- in_decorator布尔
确定输出格式。如果从 image_comparison 装饰器调用,这应该是 True。(默认=False)
- 返回:
- None 或 dict 或 str
如果图像在给定的容差范围内相等,则返回 None。
如果图像不同,返回值取决于 in_decorator。如果 in_decorator 为真,则返回一个包含以下条目的字典:
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
,以防止测试套件的大小急剧膨胀。- 参数:
- 扩展列表,默认值:["png", "pdf", "svg"]
要测试的扩展。
- 容忍度浮动
测试被视为失败的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_images列表或无
一个字符串列表,指定由调用
Figure.savefig
生成的图像的名称。如果为 None,测试函数必须使用
baseline_images
夹具,可以作为参数或使用pytest.mark.usefixtures
。此值仅在使用 pytest 时允许。- 扩展None 或 str 列表
要测试的扩展列表,例如
['png', 'pdf']
。如果为 None ,则默认为所有支持的扩展名:png、pdf 和 svg。
在测试单个扩展时,可以将其直接包含在传递给 baseline_images 的名称中。在这种情况下,extensions 必须不设置。
为了防止测试套件的规模过度膨胀,我们仅在测试明确执行依赖于该后端的功能时才包含
svg
或pdf
输出(另见check_figures_equal
装饰器以达到此目的)。- 容忍度float, 默认: 0
测试被视为失败的RMS阈值。
由于浮点计算中预期的小差异,在32位系统上,此阈值额外增加了0.06。
- freetype_version字符串或元组
此测试通过所需的 freetype 版本或版本范围。
- remove_text布尔
在比较之前,从图中移除标题和刻度文本。这对于使基线图像独立于不同版本的FreeType之间文本渲染的变化非常有用。
这不会移除其他更故意的文本,例如图例和注释。
- savefig_kwargdict
传递给 savefig 方法的可选参数。
- 风格str, dict, 或 list
可选的样式应用于图像测试。测试本身也可以根据需要应用额外的样式。默认为
["classic", "_classic_test_patch"]
。