我有一个包,其中有一个模块可以帮助用户使用 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/