如何从Squish测试脚本中获取Qt对象的方法签名



我正在使用Squish框架编写Qt应用程序的自动测试脚本。SquishIDE中的间谍可以查看"间谍选择器"选择的Qt小部件的属性和方法。在"间谍"透视图中,启用"窗口"->"显示视图"->"方法"。

我可以在Methods视图中看到类似void setParent(QObject*)的内容——方法名称、返回和参数类型。

在Python测试脚本的运行时,我可以通过调用来获得小部件属性,例如isActiveWindow -> true

aWidget = waitForObject("...")
aMap = object.properties( aWidget )

小部件方法可以从Python中获得,例如我可以调用:

>>> aWidget.isModal()
0

但是,如何获得小部件方法签名的列表,如IDE中的"方法"视图?我想到的只是

>>> dir(this)
['BackButtonPressed', 'ButtonPressed', ...

当然,它只列出了方法名,没有签名,也没有声明的参数类型或返回类型。Spy以某种方式获取签名,我如何在运行时从Python获取签名?

为了获得小部件的方法签名,可以使用其元对象信息。例如,下面是打印小部件的所有公共槽(方法)签名的Python脚本(Squish测试脚本):

widget = waitForObject(':Test Widget')
metaObject = widget.metaObject();
methodCount =  metaObject.methodCount()
for x in range(0, methodCount):
    method = metaObject.method(x)
    test.log(method.signature())

最新更新