PyQt QTest 点击 QMenu

PyQt QTest click on QMenu

在我的 PyQt 应用程序中,我有一个 主菜单 ,它具有以下结构:

Main Menu
|___
    |
    Language
    |       |
    |        Russian
    |       |
    |        English
    Exit    

我想单击 俄语 以测试语言是否已更改。我在 GUI

中有一个 link 到 language_menu
[...somewhere in MainWindow...]
self.language_menu = QtGui.QMenu()
[....]

所以

from PyQt4 import QtGui, QtCore
from PyQt4.QTest import QTest
from gui import MainWindow

class TestMainWindow(unittest.TestCase):

    def setUp(self):
        self.app = QtGui.QApplication([])
        self.ui = MainWindow()

    def tearDown(self):
        self.app.deleteLater()

    def test_translation(self):
        menu = self.ui.language_menu
        rus_lang = menu.actions()[0]
        QTest.mouseClick(rus_lang, QtCore.Qt.LeftButton)

但它告诉我

argument 1 has unexpected type 'QAction'

我该怎么做?有可能吗?

您可以使用 rus_lang.trigger()rus_lang.toggle() 激活菜单项。

我认为 ekhumoro 的回答是错误的,因为它没有抓住测试的重点, rus_lang.trigger() 没有与 gui 交互。

对我来说QTest.mouseClick(rus_lang, QtCore.Qt.LeftButton)QButton 一起工作正常,也许 QAction 有不同 API.