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)