我正在尝试在CircleCI上运行需要pytest-qt
(用于测试PySide2对话框)的测试。我收到以下错误:
xdpyinfo was not found, X start can not be checked! Please install xdpyinfo!
============================= test session starts ==============================
platform linux -- Python 3.6.8, pytest-5.0.0, py-1.8.0, pluggy-0.12.0 -- /home/circleci/project-caveman/venv/bin/python3
cachedir: .pytest_cache
PySide2 5.13.0 -- Qt runtime 5.13.0 -- Qt compiled 5.13.0
rootdir: /home/circleci/project-caveman
plugins: cov-2.7.1, xvfb-1.2.0, qt-3.2.2
collected 1 item
tests/test_main.py::test_label_change_on_button_press Fatal Python error: Aborted
Aborted (core dumped)
Exited with code 134
我正在使用此配置文件:
version: 2
jobs:
build:
working_directory: ~/project-caveman
docker:
- image: circleci/python:3.6.8-stretch
steps:
- checkout
# Dependencies
- restore_cache:
keys:
- venv-{{ .Branch }}-{{ checksum "setup.py" }}
- venv-{{ .Branch }}-
- venv-
- run:
name: Install dependencies
command: |
python3 -m venv venv
. venv/bin/activate
pip install -e .[test] --progress-bar off
- save_cache:
key: venv-{{ .Branch }}-{{ checksum "setup.py" }}
paths:
- "venv"
# Tests
- run:
name: Pytest
command: |
mkdir test-reports
. venv/bin/activate
xvfb-run -a pytest -s -v --doctest-modules --junitxml test-reports/junit.xml --cov=coveralls --cov-report term-missing
- store_test_results:
path: test-reports
- run:
name: Coveralls
command: coveralls
非常感谢您的帮助。
答案 0 :(得分:1)
我已在本地拉出circleci/python:3.6.8-stretch
容器,克隆了您的存储库并尝试执行测试,而我可以重现该错误。
要做的第一件事是为Qt运行时启用调试模式,以便它输出一些有关错误的信息。这可以通过设置环境变量QT_DEBUG_PLUGINS
来完成:
$ QT_DEBUG_PLUGINS=1 pytest -sv
现在可以立即清除容器中缺少的内容以运行测试。上面命令输出的摘录:
Got keys from plugin meta data ("xcb")
QFactoryLoader::QFactoryLoader() checking directory path "/usr/local/bin/platforms" ...
Cannot load library /home/circleci/.local/lib/python3.6/site-packages/PySide2/Qt/plugins/platforms/libqxcb.so: (libxkbcommon-x11.so.0: cannot open shared object file: No such file or directory)
QLibraryPrivate::loadPlugin failed on "/home/circleci/.local/lib/python3.6/site-packages/PySide2/Qt/plugins/platforms/libqxcb.so" : "Cannot load library /home/circleci/.local/lib/python3.6/site-packages/PySide2/Qt/plugins/platforms/libqxcb.so: (libxkbcommon-x11.so.0: cannot open shared object file: No such file or directory)"
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl, xcb.
Aborted (core dumped)
该修补程序很容易-安装libxkbcommon-x11-0
软件包:
$ sudo apt update && sudo apt install -y libxkbcommon-x11-0
将此行添加到CircleCI配置中(在测试作业之前的某个位置,例如在安装程序包依赖项的作业中),并且测试应该可以正常运行。
除此之外,还需要全局设置QT_DEBUG_PLUGINS=1
,以便将来对最终的Qt运行时失败做出反应。
找不到xdpyinfo,无法检查X启动!请安装xdpyinfo!
如果要消除该警告,请安装x11-utils
:
$ sudo apt install x11-utils
答案 1 :(得分:0)
在Centos6.5中仅运行:请安装xdpyinfo,并成功解决