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

时间:2013-11-27 11:36:11

标签: python qt squish

我使用Squish框架编写Qt应用程序的自动测试脚本。 Squish IDE中的间谍可以查看由“间谍选择器”选择的Qt小部件的属性和方法。在Spy透视图中启用Window - >显示视图 - >方法

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

在Python测试脚本的运行时,我可以通过调用

来获取小部件属性,例如isActiveWindow -> true
aWidget = waitForObject("...")
aMap = object.properties( aWidget )

可以从Python获得Widget方法,例如我可以调用:

>>> aWidget.isModal()
0

但是如何获取窗口小部件方法签名列表,如IDE中的方法视图?我想出的只是

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

但当然它只列出方法名称而不是签名,没有声明的参数类型或返回类型。间谍以某种方式获取签名,如何从Python中获取它们?

1 个答案:

答案 0 :(得分:3)

为了获取窗口小部件的方法签名,您可以使用其元对象信息。例如,下面是打印小部件所有公共插槽(方法)签名的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())