Как работать с модальным диалогом в pytest-qt, не издеваясь над диалогом - PullRequest
0 голосов
/ 25 марта 2019

Я использую pytest-qt для автоматизации тестирования PyQt GUI.Диалоги должны быть обработаны как часть тестирования (диалоги не должны быть смоделированы).

Например, должен быть обработан диалог с файлом, который появляется после нажатия кнопки.Есть 2 проблемы

  1. После команды нажатия кнопки управление программой переходит к обработчику событий, а не к следующей строке, где я могу попытаться отправить щелчок мыши / нажатия клавиш в диалоговом окне.

  2. Поскольку QDialog не добавляется в основной виджет, он не отображается среди дочерних элементов основного виджета.Итак, как получить ссылку на QDialog?

Я пробовал многопоточность, но это не сработало, позже я обнаружил, что объекты QObject не являются потоко-безопасными.

def test_filedialog(qtbot, window):
    qtbot.mouseClick(window.browseButton, QtCore.Qt.LeftButton, delay=1)
    print("After mouse click")
    #This is where I need to get the reference of QDialog and handle it

1 Ответ

0 голосов
/ 29 марта 2019

Это можно сделать, используя QTimer.

def test_filedialog(qtbot, window):
    def handle_dialog():
        # get a reference to the dialog and handle it here
    QTimer.singleShot(500, handle_dialog)
    qtbot.mouseClick(window.browseButton, QtCore.Qt.LeftButton, delay=1)

Для получения более подробной информации см. Эту ссылку

...