无法在github动作中创建(python)QApplication

问题描述 投票:0回答:1

我的(python)Qt gui有一些单元测试,它需要QApplication实例,但是创建一个对我来说总是失败的(即以核心转储结尾并且应用程序在QApplication()处中止)。到目前为止,我尝试过的是:

  • 创建方法:
    • 模块级别的普通app = QApplication()
    • app = QApplication(['--platform offscreen'])
    • 使用用于管理QApplication对象创建的pytest-qt的夹具,即将qtbot传递给我的测试
  • 我什至尝试了qt的两个python端口,即:
    • PyQt5
    • PySide2
  • 虚拟屏幕:

我曾尝试使用https://github.com/nektos/act在本地调试此问题,但是使用此方法问题是不可复制的(即,一切工作都按预期进行),直到我添加了herbstluftwm,即我唯一能实现的是在本地它也开始失败。

我还能检查什么?您是否看到QApplication在github操作上成功创建?顺便说一句。如何使Qt的输出在github动作中可见? (我添加了env: QT_DEBUG_PLUGINS: 1,窗台看不到任何错误)

python pyqt5 pyside2 github-actions pytest-qt
1个回答
0
投票

感谢@eyllanesc对MRE的请求,我创建了此https://github.com/konserw/mre最小示例存储库,使我可以自己找到解决方案。事实证明,您需要安装xvfblibxkbcommon-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

© www.soinside.com 2019 - 2024. All rights reserved.