2017-04-06 14 views
1

pyqt5アプリケーション用のプラグインであるコードをテストするために、ダミーのQApplicationオブジェクトを作成するテストを作成しています。travis-ci pyqtアプリケーション作成エラー

しかし、QApplicationコードを作成しようとすると、ローカルでは期待どおりに動作しますが、segfaultsは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ジョブであります:

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 ... 
01: https://travis-ci.org/nirizr/rematch/jobs/219490893

そして、ここでは、テストの抜粋です

これはトラビスの問題ですか?何か間違っていますか?

答えて

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

関連する問題