Skip to main content
 首页 » 编程设计

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

2024年08月28日35lidabo

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

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

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

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

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

>>> aWidget.isModal() 
0 

但是如何获取小部件方法签名列表,就像在 IDE 的方法 View 中一样?我想出的只是

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

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

请您参考如下方法:

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