我使用squish-4.2.2来测试我们工具的GUI,并使用purecov.i386_linux2.7.3来覆盖它们。我们的工具基于qt-4.7.4_qsci版本的QT。在Purecov模式下构建我们的工具之后,当我们运行测试时,如果测试包含带有“弹出菜单”的操作,它们将失败。 Purecov无法生成结果* .pcv文件。另外我想要注意的是,我们的工具在没有Squish的情况下运行时不会失败,但是“Popsup Menu”不会在30-60秒之后打开(在正常模式下它会在1-2秒内完成)。 所以我有两个问题: 1.当使用Squish运行测试时,当测试包含“菜单”项目的操作时,它们会失败; 2.当测试失败时,Purecov不会生成* .pcv文件。
我试图在您的网站上找到一些有趣的东西来解决这些问题,但我找不到与我的问题相关的任何内容。 在我看来,Squish失败了,因为当我尝试打开“菜单”项时,GUI比其逻辑部分运行得更快,并且在打开“菜单”项后,Squish认为操作已完成并杀死了我的工具。
您能否告诉我我可以用我的测试或工具解决这些问题? 感谢。
答案 0 :(得分:0)
过去我遇到了类似的问题,点击了我应用中的菜单。 我希望这对你也有帮助!
示例强>: 我想打开一个"文件"菜单,然后是子菜单(弹出窗口)"新"。当我在Squish的记录模式中时,Squish在python中记录下面的代码:
activateItem(waitForObjectItem(":MainWindowForm.m_poMainMenu_QMenuBar", "File"))
activateItem(waitForObjectItem(":MainWindowForm.menuFile_QMenu", "New..."))
现在,这并没有一直有效,说实话,我没有理解为什么:)。 但是,我在他们的网站上发现了这个可能的解决方案。所以,我已经从上面的代码中替换了Symbolic名称,并创建了一个在Real name属性之后调用对象的函数:
def callMenu(menu_name, submenu_name):
activateItem(waitForObjectItem("{type='QMenuBar' visible='true'}", menu_name))
activateItem(waitForObjectItem("{type='QMenu' title='%s'}" % menu_name, submenu_name))
在我做了这个改变后,测试运行顺利,没有任何问题(至少从菜单方面)。