我的(python)Qt gui有一些单元测试,它需要QApplication实例,但是创建一个对我来说总是失败的(即以核心转储结尾并且应用程序在QApplication()
处中止)。到目前为止,我尝试过的是:
app = QApplication()
app = QApplication(['--platform offscreen'])
qtbot
传递给我的测试xvfb
herbstluftwm
x11-utils libxkbcommon-x11-0
中的建议安装QApplication instance/qtbot fixture causes travis-ci to abort and core dump我曾尝试使用https://github.com/nektos/act在本地调试此问题,但是使用此方法问题是不可复制的(即,一切工作都按预期进行),直到我添加了herbstluftwm
,即我唯一能实现的是在本地它也开始失败。
我还能检查什么?您是否看到QApplication在github操作上成功创建?顺便说一句。如何使Qt的输出在github动作中可见? (我添加了env: QT_DEBUG_PLUGINS: 1
,窗台看不到任何错误)
感谢@eyllanesc对MRE的请求,我创建了此https://github.com/konserw/mre最小示例存储库,使我可以自己找到解决方案。事实证明,您需要安装xvfb
和libxkbcommon-x11-0
,但不能运行xvfb
服务或herbstluftwm
。然后,您需要使用coverage
运行测试命令(在我的情况下为xvfb-run
),对于github操作,它需要覆盖的绝对路径,例如:
xvfb-run `which coverage` run -m pytest
我希望这将有助于github操作的未来用户努力使PyQt5或PySide2 GUI测试运行。
顺便说一句。 pytest使Qt的QT_DEBUG_PLUGINS
的输出静音,因此此处用一些最小的脚本重现问题,用简单的python调用替换test命令是关键。参见https://github.com/konserw/mre/runs/509156615?check_suite_focus=true