【问题标题】:How can I test if matplotlib has produced the correct plot?如何测试 matplotlib 是否生成了正确的图?
【发布时间】:2021-06-08 17:57:26
【问题描述】:

我想为生成 matplotlib 图的代码编写测试。理想情况下,测试将能够在没有我输入的情况下确定输出是否合适。

我已将数据设置解耦为易于测试的函数,但我不确定如何在没有目视检查的情况下解耦绘图或测试结果。这是以前有人处理过的事情吗?

是否有在这种情况下进行测试的既定做法?

理想情况下,我想要这样的东西:

fig, ax = plt.subplot()
ax.plot(x_data, y_data)
ax.set_xlabel('x')
ax.set_ylabel('y')
assertTrue(fig == expected_fig)

【问题讨论】:

    标签: python unit-testing matplotlib testing


    【解决方案1】:

    是的,Matplotlib 开发人员已经解决了这个问题。 practice they've established 是这样的:

    • 编写一个生成绘图图的测试。
    • 将该图另存为临时文件夹中的图像文件。
    • 断言输出图像和对应的“基线”图像相同。

    测试将在第一次运行时失败。然后,您可以检查一次图像,并将其用作未来测试的参考,只需将文件复制到folder holding baseline images

    您可以重新使用 Matplotlib 测试装置(source codeAPI documentation)并查看the Matplotlib tests 以了解它们在实践中的使用方式。本质上,comparison mechanism 通过 PIL 加载两个图像文件,将它们转换为 NumPy 数组,并测试这两个arrays are equal。虽然还有一种方法可以指定公差并允许微小的偏差。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-19
      • 2021-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多