我使用PYtestqt自动化了在PYQT5中开发的记事本GUI。当我尝试使用qtbot单击菜单栏或工具栏选项时,它并没有模拟点击
def test_quit(qtbot):
window = MainWindow()
qtbot.add_widget(window)
window.show()
qtbot.wait_for_window_shown(window)
qtbot.mouseClick(window.file_menu, QtCore.Qt.LeftButton)
答案 0 :(得分:0)
我试图找到一种在菜单下触发动作的方法。由于您最有可能想要触发操作(菜单下的项目),因此这也可能对您有所帮助。代替使用qtbot,直接使用窗口并调用触发器。像这样:
def test_quit(qtbot):
window = MainWindow()
qtbot.add_widget(window)
window.show()
qtbot.wait_for_window_shown(window)
window.file_quit_action.trigger()
答案 1 :(得分:0)
如果你只想触发点击事件连接动作,你可以试试这个。
在 MainWindow 类中:
# binding action and function
action_open = QAction("Open", self)
action_open.setCheckable(False)
action_open.setObjectName("action_open") # Notice set a object name
action_open.triggered.connect(self.file_open)
在测试脚本中:
def test_file_open_action(qtbot):
window = MainWindow()
qtbot.add_widget(window)
window.show()
win.findChild(QAction, 'action_open').trigger() # call the method
所以你可以在模拟点击 memubar 小部件后得到相同的结果。