Я пишу модульные тесты для простого графического интерфейса, написанного в PySide 1.2.2. Я работаю над Windows 7 и с Python 2.7.6.Тестирование QFileDialog при использовании PySide
Я хочу проверить эту функцию, которая активируется при нажатии кнопки.
def setDestination(self):
directory = QtGui.QFileDialog.getExistingDirectory(self, "Select Directory")
self.destLineEdit.setText(directory)
До сих пор я придумал следующий тестовый пример:
def test_browse_dest(self):
# Reset the GUI to its defaults
self.clear()
# Click the destination browse button
QTest.mouseClick(self.window.browseButton_2, QtCore.Qt.LeftButton)
# Test paths
destPath = os.path.join(os.getcwd(), TEST_DIR_B, "test")
self.assertEqual(self.window.destLineEdit.text(), destPath)
Этот тест работает, но это является интерактивным. Мне нужно выбрать каталог и нажать кнопку «Выбрать папку». Хотя это, конечно, здорово и интересно играть, мне было интересно, есть ли способ автоматизировать эти действия.
Я попытался просто скрыть диалог с файлом и установить текст в строке самостоятельно. Во-первых, я написал следующее:
def setDestination(self):
self.fileDialog = QtGui.QFileDialog()
directory = self.fileDialog.getExistingDirectory(self, "Select Directory")
self.destLineEdit.setText(directory)
Затем я попытался открыть диалоговое окно файла внутри модульного теста.
def test_browse_dest(self):
# Reset the GUI to its defaults
self.clear()
# Click the destination browse button
QTest.mouseClick(self.window.browseButton_2, QtCore.Qt.LeftButton)
self.window.fileDialog.hide()
# Test paths
destPath = os.path.join(os.getcwd(), TEST_DIR_B, "test")
self.window.destLineEdit.setText(destPath)
self.assertEqual(self.window.destLineEdit.text(), destPath)
Однако, это не сработало. Диалоговое окно файла все еще запущено, и мне пришлось взаимодействовать с ним для завершения теста.