为了测试我的代码是pyqt5应用程序的插件,我正在编写创建虚拟QApplication对象的测试。
但是,每当我尝试在本地创建QApplication代码时,都会按预期工作,但在travis中会出现段错误。
我将问题指向以下一行:
qapp = QtWidgets.QApplication([])
这是我得到的错误(取自travis日志):
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
这是travis-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的问题还是我做错了什么?
答案 0 :(得分:3)
您需要在Travis上运行xvfb才能执行图形应用程序(如果您不需要任何GUI,请改用QCoreApplication
)。
您可以follow Travis' docs或(因为看起来您正在使用pytest),请使用我的pytest-xvfb plugin。
顺便说一句:pytest' -s
标志(不隐藏"传递"测试的输出)在调试这样的问题时非常有用。
答案 1 :(得分:1)
在gitlab CI / CD上,您可以使用QT_QPA_PLATFORM: "offscreen"