0

我使用 squish-4.2.2 来测试我们工具的 GUI,并使用 purecov.i386_linux2.7.3 来覆盖它们。我们的工具基于 QT 的 qt-4.7.4_qsci 版本。在 Purecov 模式下构建我们的工具后,当我们运行测试时,如果测试包含带有“弹出菜单”的操作,它们就会失败。Purecov 无法生成结果 *.pcv 文件。另外我想指出,我们的工具在没有 Squish 的情况下运行时不会失败,但是“弹出菜单”不会早于 30-60 秒后打开(在正常模式下,它会在 1-2 秒内完成)。所以我有 2 个问题: 1. 当使用 Squish 运行测试时,当测试包含使用“菜单”项的操作时它们会失败;2. 测试失败时 Purecov 不生成 *.pcv 文件。

我试图在您的网站上找到一些有趣的东西来解决这些问题,但我找不到与我的问题相关的任何东西。在我看来,Squish 失败是因为当我尝试打开“菜单”项时,GUI 运行速度比它的逻辑部分快,并且在打开“菜单”项后,Squish 认为操作已完成并杀死我的工具。

你能告诉我我可以用我的测试或工具做什么来解决这些问题吗?谢谢。

4

1 回答 1

0

我过去也遇到过类似的问题,从我的应用程序中单击菜单。我希望这对你也有帮助!

示例:我想打开一个“文件”菜单,然后是一个子菜单(弹出)“新建”。当我处于 Squish 的记录模式时,Squish 在 python 中记录以下代码:

activateItem(waitForObjectItem(":MainWindowForm.m_poMainMenu_QMenuBar", "File"))
activateItem(waitForObjectItem(":MainWindowForm.menuFile_QMenu", "New..."))

现在,这并没有一直奏效,老实说,我没能理解为什么:)。但是,我在他们的网站上发现,这是一个可能的解决方案。所以,我已经从上面的代码中替换了符号名称,并创建了一个函数来调用实名属性之后的对象:

def callMenu(menu_name, submenu_name):

    activateItem(waitForObjectItem("{type='QMenuBar' visible='true'}", menu_name))
    activateItem(waitForObjectItem("{type='QMenu' title='%s'}" % menu_name, submenu_name))

在我进行此更改后,测试运行顺利,不再出现问题(至少从菜单方面)。

于 2016-03-11T11:07:32.690 回答