2017-04-06 45 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

相關問題