2017-04-06 48 views
1

为了测试我的代码是一个pyqt5应用程序的插件,我正在编写创建虚拟QApplication对象的测试。travis-ci pyqt应用程序创建失败

但是,每当我尝试创建一个QApplication代码在本地按预期工作,但在Travis中发生段错误。

我精确定位的问题下面一行:

qapp = QtWidgets.QApplication([]) 

这是我得到的错误(从特拉维斯记录所采取的):

tests/idaplugin/test_plugin.py::test_plugin_creation /home/travis/.travis/job_stages: line 53: 2382 Aborted     (core dumped) PYTHONPATH=. py.test ./${PROJECT} ./tests/${PROJECT} --verbose --cov-report= --cov=$PROJECT 

这里是特拉维斯-CI工作:https://travis-ci.org/nirizr/rematch/jobs/219490893

而这里的测试片段:

def test_plugin_creation(): 
    from PyQt5 import QtWidgets 
    qapp = QtWidgets.QApplication([]) 

    # test be here, requires a QApp to function 
    plugin = plugin_rematch.PLUGIN_ENTRY() 

    ... extra test code removed ... 

这是Travis的问题还是我做错了什么?

回答

2

您需要在Travis上运行xvfb才能执行图形应用程序(如果您不需要任何GUI,请改用QCoreApplication)。

您可以使用follow Travis' docs或(因为它看起来像您正在使用pytest),请使用我的pytest-xvfb plugin

顺便说一句:pytest的-s标志(不隐藏“传递”测试的输出)在调试类似问题时非常有用。

+0

谢谢!如果我不需要看到任何GUI,但可以使用不同的可见小部件和pytest-qt来自动化与这些小部件的用户交互,我可以使用QCoreApplication吗? – NirIzr

+0

不,如果你想使用QtWidgets,你需要使用Xvfb。 –

+0

我明白了。非常感谢! – NirIzr