Alp*_*ium 3 python pytest circleci pytest-qt
我正在尝试pytest-qt在 CircleCI 上运行需要(用于测试 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
Run Code Online (Sandbox Code Playgroud)
我正在使用这个配置文件:
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
Run Code Online (Sandbox Code Playgroud)
非常感谢任何帮助,提前致谢。
我已经在circleci/python:3.6.8-stretch本地拉取了容器,克隆了您的存储库并尝试执行测试,但我可以重现该错误。
首先要做的是为 Qt 运行时启用调试模式,以便它打印一些有关错误的信息。这可以通过设置环境变量来完成QT_DEBUG_PLUGINS:
$ QT_DEBUG_PLUGINS=1 pytest -sv
Run Code Online (Sandbox Code Playgroud)
现在可以立即清楚容器中缺少什么来运行测试。来自上述命令输出的片段:
$ QT_DEBUG_PLUGINS=1 pytest -sv
Run Code Online (Sandbox Code Playgroud)
解决这个问题很简单 - 安装libxkbcommon-x11-0软件包:
$ sudo apt update && sudo apt install -y libxkbcommon-x11-0
Run Code Online (Sandbox Code Playgroud)
在 CircleCI 配置中添加这一行(在测试作业之前的某处,例如在安装包依赖项的作业中),测试应该可以正常运行。
除此之外,QT_DEBUG_PLUGINS=1全局设置是有意义的,这样您就可以在将来对最终的 Qt 运行时故障做出反应。
找不到xdpyinfo,无法检查X启动!请安装xdpyinfo!
如果您想摆脱该警告,请安装x11-utils:
$ sudo apt install x11-utils
Run Code Online (Sandbox Code Playgroud)