pytest-qt: using qtbot gives segmentation fault

224 Views Asked by At

I am on Ubuntu 22.04, using Poetry, Python 3.10, PyQt6, and pytest with the pytest-qt plugin. When I run a test with pytest using the qtbot fixture I get a segmentation fault. If I remove the qtbot fixture from the test file, it works fine. Here is a minimal example (my real test case is more complicated):

$ poetry new --src myproject
$ cd myproject
$ poetry add pyqt6
$ poetry add --group=dev pytest
$ poetry add --group=dev pytest-qt
$ cat <<'END' > pytest.ini
[pytest]
qt_api=pyqt6
END
$ cat <<'END' > src/myproject/main.py
from PyQt6.QtWidgets import QApplication
def qapp(app: QApplication) -> None:  # This is the function that we will test with pytest
    app.quit()
END
$ cat <<'END' > tests/test_main.py  # This is the test file
import pytest
from PyQt6.QtWidgets import QApplication
import myproject.main
from typing import Any
QtBot = Any  # Missing type hints here
def test_app(qtbot: QtBot) -> None:
    app = QApplication([])
    myproject.main.qapp(app)
    assert 1 == 1
END
$ poetry install
$ poetry shell
$ pytest
============================================================================ test session starts ============================================================================
platform linux -- Python 3.10.4, pytest-7.4.0, pluggy-1.2.0
PyQt6 6.5.1 -- Qt runtime 6.5.1 -- Qt compiled 6.5.1
rootdir: /home/hakon/test/python/pytest-qt/qtbot/myproject
plugins: qt-4.2.0
collected 1 item                                                                                                                                                            

tests/test_main.py Fatal Python error: Segmentation fault

Current thread 0x00007f24e2fc1740 (most recent call first):
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/_pytest/python.py", line 194 in pytest_pyfunc_call
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/pluggy/_callers.py", line 80 in _multicall
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/pluggy/_manager.py", line 112 in _hookexec
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/pluggy/_hooks.py", line 433 in __call__
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/_pytest/python.py", line 1788 in runtest
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/_pytest/runner.py", line 169 in pytest_runtest_call
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/pluggy/_callers.py", line 80 in _multicall
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/pluggy/_manager.py", line 112 in _hookexec
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/pluggy/_hooks.py", line 433 in __call__
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/_pytest/runner.py", line 262 in <lambda>
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/_pytest/runner.py", line 341 in from_call
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/_pytest/runner.py", line 261 in call_runtest_hook
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/_pytest/runner.py", line 222 in call_and_report
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/_pytest/runner.py", line 133 in runtestprotocol
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/_pytest/runner.py", line 114 in pytest_runtest_protocol
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/pluggy/_callers.py", line 80 in _multicall
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/pluggy/_manager.py", line 112 in _hookexec
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/pluggy/_hooks.py", line 433 in __call__
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/_pytest/main.py", line 349 in pytest_runtestloop
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/pluggy/_callers.py", line 80 in _multicall
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/pluggy/_manager.py", line 112 in _hookexec
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/pluggy/_hooks.py", line 433 in __call__
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/_pytest/main.py", line 324 in _main
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/_pytest/main.py", line 270 in wrap_session
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/_pytest/main.py", line 317 in pytest_cmdline_main
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/pluggy/_callers.py", line 80 in _multicall
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/pluggy/_manager.py", line 112 in _hookexec
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/pluggy/_hooks.py", line 433 in __call__
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/_pytest/config/__init__.py", line 166 in main
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/lib/python3.10/site-packages/_pytest/config/__init__.py", line 189 in console_main
  File "/home/hakon/.cache/pypoetry/virtualenvs/myproject-rfHFWcwh-py3.10/bin/pytest", line 8 in <module>

Extension modules: PyQt6.QtCore, PyQt6.QtGui, PyQt6.QtWidgets, PyQt6.QtTest (total: 4)
Segmentation fault (core dumped)
0

There are 0 best solutions below