python - 在 Travis CI 中测试基于 matplotlib 的绘图

标签 python matplotlib plot travis-ci

我有一个包,其中有一个模块可以帮助用户使用 matplotlib 生成特定的绘图。当我在 Travis 的单元测试中调用这些函数时,出现以下错误:

RuntimeError: Invalid DISPLAY variable

我该如何解决?

生成绘图后,我的函数通常会调用 pyplot.show(),这会打开一个需要关闭的窗口。当我在 Travis 的单元测试中调用这些函数时,它们会永远挂起。

我如何测试这些绘图是使用 Travis CI 生成的?

最佳答案

更新:根据@matt-pitkin 的评论,该方法已更新。如果使用 Ubuntu Xenial 容器,启用 xvfb 的首选方法是通过 Travis 服务:

services:
- xvfb

但是,如果使用 Ubuntu Trusty 容器,我的原始答案(如下)仍然相关。我还建议阅读@david-ketcheson 的回答,它对原始问题有更具体的解决方案。


为了在 Travis 中设置 DISPLAY 变量,您需要从他们的 VM 中模拟显示。 They teach how to do it通过将以下内容添加到 .travis.yml 文件的 before_script 来使用 xvfb:

before_script: # configure a headless display to test plot generation
- "export DISPLAY=:99.0"
- "sh -e /etc/init.d/xvfb start"
- sleep 3 # give xvfb some time to start

为了让 Travis 不被情节所困扰,只需不要调用 pyplot.show()。如果您测试的图太多,请确保调用 pyplot.close() 否则它会提示打开的图像太多。

关于python - 在 Travis CI 中测试基于 matplotlib 的绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35403127/

相关文章:

python - 向量化距离计算的有效方法

python - 在 Ubuntu 上的 virtualenv 中为 matplotlib 安装 python tk

python - 在 matplotlib 中将 "The Economist"样式保存为 mplstyle 中的默认样式

matlab - MATLAB 中的连续图

python - 数据未绘制,但没有错误

python - 从数据框中删除多列

python - Plotly:如何使用日期时间索引在中心绘制一条线的范围?

python - Flask 应用程序单元测试断言错误

python - 获取 Matplotlib 绘图标签坐标

r - 如何绘制日期和时间的特定范围的 x 值?错误 "invalid xlim value"