2013-11-27 13 views
2

我正在使用Squish框架編寫Qt應用程序的自動測試腳本。 Spy在Squish IDE中可以查看由「間諜選擇器」選擇的Qt Widget的屬性和方法。在窺視透視啓用窗口 - >顯示視圖 - >方法。如何從Squish測試腳本獲取Qt對象的方法簽名?

我可以在Methods視圖中看到類似void setParent(QObject*) - 方法名稱,返回值和參數類型。

在用Python測試腳本運行時我可以從Python中獲得控件屬性,例如isActiveWindow -> true,通過調用

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

的Widget方法可用,比如我可以打電話:

>>> aWidget.isModal() 
0 

但如何獲取小部件方法簽名的列表,如IDE中的Methods視圖中所示?所有我想出的是

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

但當然它只列出方法名稱不簽名,沒有聲明的參數類型或返回類型。間諜以某種方式獲取簽名,我怎樣才能從Python運行它們?

回答

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()) 
相關問題