The main usage is to use the
qtbot fixture, responsible for handling
creation as needed and provides methods to simulate user interaction,
like key presses and mouse clicks:
def test_hello(qtbot): widget = HelloWidget() qtbot.addWidget(widget) # click in the Greet button and make sure it updates the appropriate label qtbot.mouseClick(widget.button_greet, QtCore.Qt.LeftButton) assert widget.greet_label.text() == "Hello!"
This allows you to test and make sure your view layer is behaving the way you expect after each code change.
- qtbot fixture to simulate user interaction with
- Automatic capture of
- waitSignal and waitSignals functions to block test execution until specific signals are emitted.
- Exceptions in virtual methods and slots are automatically captured and fail tests accordingly.
pytest-qt requires Python 3.7+.
To force a particular API, set the configuration variable
qt_api in your
pytest.ini file to
Alternatively, you can set the
variable to the same values described above (the environment variable wins over the configuration
if both are set).