Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从Squish测试脚本中获取Qt对象的方法签名?_Python_Qt_Squish - Fatal编程技术网

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

Python 如何从Squish测试脚本中获取Qt对象的方法签名?,python,qt,squish,Python,Qt,Squish,我正在使用Squish框架编写Qt应用程序的自动测试脚本。SquishIDE中的Spy可以查看由“Spy picker”选择的Qt小部件的属性和方法。在Spy透视图中,启用窗口->显示视图->方法 我可以在方法视图中看到类似于void setParent(QObject*)-方法名称、返回和参数类型的内容 在Python测试脚本的运行时,我可以通过调用 aWidget = waitForObject("...") aMap = object.properties( aWidget ) Pyth

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

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

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

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())