用python压缩测试测试qt应用程序

2024-09-28 21:47:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在SquishIDE上编写一个python测试来测试一个QT应用程序。我可以用压榨的方法记录测试,但我不知道如何用手写同样的测试?在

下面是记录的测试

def main():
    startApplication("hmi")
    mouseClick(waitForObject(":Setup_Text"), 18, 5, 0, Qt.LeftButton)
    activateItem(waitForObjectItem(":_QMenu", "Monitor setup       X"))
    mouseClick(waitForObject(":_Rectangle"), 33, 31, 0, Qt.LeftButton)
    activateItem(waitForObjectItem(":_QMenu", "ECG                X"))
    mouseClick(waitForObject(":_Rectangle_2"), 65, 66, 0, Qt.LeftButton)
    sendEvent("QCloseEvent", waitForObject(":_QDeclarativeView"))

Tags: 方法应用程序def记录qt手写rectangleqmenu
3条回答

您需要在startApplication行之后设置一个断点。在它下面打个盹儿。在

一旦程序中断,几秒钟后,应用程序对象窗口将填充对象映射/层次结构。从这个层次结构中,可以线性方式访问对象。每次你展开一个对象来看到它的子对象,那就更深了一层。在

例如,假设我在“应用程序对象”窗口中看到的是一个可单击的右箭头,标记为: ->;主声明视图

然后我点击它,它就展开了:

|主声明视图

->;某个按钮

我访问SomeButton及其属性如下:

myButton=findObject(“:MainDeclarativeView.SomeButton“)

注意MainDeclarativeView前面的冒号和指定SomeButton是MainDeclarativeView的子对象的句点。现在,如果你这样做了:

鼠标单击(我的按钮)

你可以点击它。您也可以将waitForObject作为findObject的参数,然后将“:Main…”放在waitForObject中,但根据我的经验,这并没有什么不同。如果在“应用程序对象”菜单中看不到对象,则无法找到该对象并将其作为对象分配给变量。在

从现在起,您可以通过myButton访问SomeButton的属性,例如

showMeX=myButton.x

希望有帮助

就我个人而言,我使用类来定义PageObjects(借鉴cumber/selenium的思想), 包装器来定义小部件的功能 和decorators,用于登录和加载要测试的模块。 这样可以最大限度地重用代码,并将维护开销降至最低。在

这也意味着测试可以在编写任何代码之前创建,只要开发人员理解合理地命名小部件并预先定义它们。在

from globals.widgets.QPushButton import QPushButtonWrapper # simple click functions
from globals.toolbars.sometoolbar import SomeToolBar

class SomeFormPO(PageObject): #PageObject has some "lazy ok and cancel methods"

    def __init__(self):
        name = <symbolic name>
        PageObject.__init__(self, name)

        self.some_tool_bar = SomeToolBar() # contains defines for toolbar e.g.
         #  self.some_button = QPushButtonWrapper(<symbolic name of button>)

那么在你的测试中:

^{pr2}$

这里不是详细描述方法的地方,但是如果您阅读:

UI Tests with Cucumber (5 part blob series) <http://www.cheezyworld.com/2010/11/09/ui-tests-not-brittle/>\u(Ruby)Selenium on PageObjects <http://code.google.com/p/selenium/wiki/PageObjects>(Java)

你将了解所使用的原则。在

使用屏幕截图验证点来帮助您确定什么是什么。如果您在“应用程序对象”窗口中单击某个对象的复选框,它们将(最终)填充到Spy页上的单独选项卡中。在

相关问题 更多 >