2

Squish フレームワークを使用して Qt アプリケーションの自動テストをスクリプト化しています。Squish IDE の Spy は、「スパイ ピッカー」で選択された Qt ウィジェットのプロパティとメソッドを表示できます。Spy パースペクティブで、ウィンドウ -> ビューの表示 -> メソッドを有効にします。

void setParent(QObject*)メソッドビューで、メソッド名、戻り値、パラメーターの型のようなものを見ることができます。

Python テスト スクリプトからの実行時に、たとえばisActiveWindow -> trueを呼び出して、ウィジェットのプロパティを取得できます。

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

ウィジェット メソッドは Python から利用できます。たとえば、次のように呼び出すことができます。

>>> aWidget.isModal()
0

しかし、IDE のメソッド ビューのように、ウィジェット メソッド シグネチャのリストを取得するにはどうすればよいでしょうか。私が思いついたのは

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

ただし、もちろん、シグネチャではなくメソッド名のみをリストしています。宣言されたパラメーターの型や戻り値の型はありません。Spy はどういうわけか署名を取得しますが、実行時に Python から署名を取得するにはどうすればよいですか?

4

1 に答える 1

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())
于 2013-11-27T12:46:57.800 に答える