Python 如何测试matplotlib是否生成了正确的绘图?

Python 如何测试matplotlib是否生成了正确的绘图?,python,unit-testing,matplotlib,testing,Python,Unit Testing,Matplotlib,Testing,我想为生成matplotlib图的代码编写测试。理想情况下,测试能够在没有输入的情况下确定输出是否合适 我已经将数据设置解耦为易于测试的函数,但我不确定如何在没有目视检查的情况下解耦绘图或测试结果。这是以前有人处理过的事情吗 在这种情况下,是否有既定的测试实践 理想情况下,我想要这样的东西: fig, ax = plt.subplot() ax.plot(x_data, y_data) ax.set_xlabel('x') ax.set_ylabel('y') assertTrue(fig ==

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

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

在这种情况下,是否有既定的测试实践

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

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

是的,Matplotlib开发人员已经解决了这个问题。问题是:

  • 编写一个生成绘图图形的测试
  • 将该图形另存为临时文件夹中的图像文件
  • 断言输出图像和相应的“基线”图像是相同的
测试第一次运行时将失败。然后,您检查了一次图像,并将其作为将来测试的参考,只需将文件复制到

您可以重新使用Matplotlib测试夹具(,),并查看它们在实践中的使用情况。本质上,通过PIL加载这两个图像文件,将它们转换为NumPy数组,并测试这两个文件。尽管也有一种方法可以指定公差并允许微小偏差