自動GUIテストの構成

開発中は、わいせつなだけでなく、単体テストでもコードをカバーしようとします。 ただし、すべてをテストでカバーすることが常に機能するとは限りません。 さらに、テストの作成に時間がかかるGUIが残っています。 これらのすべての問題について、リポジトリに対する後続の各Kamitが既存の機能を損なわないという要件は変更されていません。



この記事では、Qtで記述されたデスクトップアプリケーションをテストするために使用するツールを説明します。



半年前、GUIテストツールの研究中にfroglogicのSquishが私の見解になりました。 このソリューションの利点のうち、次の点に注意してください。







スケールの反対側には、93,000ルーブルのライセンスの費用がかかります。 (これは8月の為替レート2650ユーロです)。



競争相手の誰もお金のためにそのようなグッズを提供しなかったので、私は同様の無料ソリューションを見つけられなかったので、しぶしぶライセンスを購入しました。



それでは、バックグラウンドが完成したら、テストの作成に移りましょう。 デモンストレーションのために、公開プロジェクトの1つであるMDCを選択しました 。 タスクは簡単です。MDCがICQ、Gtalk、mail.ruに接続できるかどうかを確認します。 このトピックは、AOLの最新の驚きに照らして特に関連しています:)。 コンタクトシートウィンドウの外観は、接続の兆候と見なされます。



  1. MDCがコンパイルされるQtと同じバージョンのソースからSquishを収集します。
  2. MDCデバッグモードを収集します(cリリースSquishは機能しません)。
  3. Squishを起動します。
  4. MDCのテストスーツを作成します。
  5. テストを作成する言語を選択します。
  6. アプリケーションの起動パラメーター(コマンドラインパラメーター、環境変数など)を構成します。
  7. レコードモードで新しいテストケースを作成します(SquishはMDCを起動し、アプリケーションで実行するすべてのアクションをスクリプトに記憶します)。
  8. その動作を確認します。








したがって、テストのテキストを取得し、これを基礎として使用します。



def main(): waitForObject( ":_QWidget" ) sendEvent( "QResizeEvent" , ":_QWidget" , 22, 22, 769, 474) waitForObject( ":_QGraphicsItem" ) mouseClick( ":_QGraphicsItem" , 221, 193, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) dragItemBy( ":_QLineEdit" , 153, -191, 26, 198, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) sendEvent( "QMouseEvent" , ":_QLineEdit" , QEvent.MouseButtonRelease, 179, 7, Qt.LeftButton, 1) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Ctrl+A>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "squish@mail.ru" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Tab>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "1234" ) waitForObject( ":MDC: _CStartUpWidget" ) sendEvent( "QMoveEvent" , ":MDC: _CStartUpWidget" , 577, 70, 734, 62) mouseClick( ":MDC: _QWidget" , 66, 372, 1, Qt.LeftButton) waitForObject( ":MDC v1.0.3.1.nightly_CContactListWidget" ) * This source code was highlighted with Source Code Highlighter .



  1. def main(): waitForObject( ":_QWidget" ) sendEvent( "QResizeEvent" , ":_QWidget" , 22, 22, 769, 474) waitForObject( ":_QGraphicsItem" ) mouseClick( ":_QGraphicsItem" , 221, 193, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) dragItemBy( ":_QLineEdit" , 153, -191, 26, 198, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) sendEvent( "QMouseEvent" , ":_QLineEdit" , QEvent.MouseButtonRelease, 179, 7, Qt.LeftButton, 1) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Ctrl+A>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "squish@mail.ru" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Tab>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "1234" ) waitForObject( ":MDC: _CStartUpWidget" ) sendEvent( "QMoveEvent" , ":MDC: _CStartUpWidget" , 577, 70, 734, 62) mouseClick( ":MDC: _QWidget" , 66, 372, 1, Qt.LeftButton) waitForObject( ":MDC v1.0.3.1.nightly_CContactListWidget" ) * This source code was highlighted with Source Code Highlighter .



  2. def main(): waitForObject( ":_QWidget" ) sendEvent( "QResizeEvent" , ":_QWidget" , 22, 22, 769, 474) waitForObject( ":_QGraphicsItem" ) mouseClick( ":_QGraphicsItem" , 221, 193, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) dragItemBy( ":_QLineEdit" , 153, -191, 26, 198, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) sendEvent( "QMouseEvent" , ":_QLineEdit" , QEvent.MouseButtonRelease, 179, 7, Qt.LeftButton, 1) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Ctrl+A>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "squish@mail.ru" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Tab>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "1234" ) waitForObject( ":MDC: _CStartUpWidget" ) sendEvent( "QMoveEvent" , ":MDC: _CStartUpWidget" , 577, 70, 734, 62) mouseClick( ":MDC: _QWidget" , 66, 372, 1, Qt.LeftButton) waitForObject( ":MDC v1.0.3.1.nightly_CContactListWidget" ) * This source code was highlighted with Source Code Highlighter .



  3. def main(): waitForObject( ":_QWidget" ) sendEvent( "QResizeEvent" , ":_QWidget" , 22, 22, 769, 474) waitForObject( ":_QGraphicsItem" ) mouseClick( ":_QGraphicsItem" , 221, 193, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) dragItemBy( ":_QLineEdit" , 153, -191, 26, 198, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) sendEvent( "QMouseEvent" , ":_QLineEdit" , QEvent.MouseButtonRelease, 179, 7, Qt.LeftButton, 1) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Ctrl+A>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "squish@mail.ru" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Tab>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "1234" ) waitForObject( ":MDC: _CStartUpWidget" ) sendEvent( "QMoveEvent" , ":MDC: _CStartUpWidget" , 577, 70, 734, 62) mouseClick( ":MDC: _QWidget" , 66, 372, 1, Qt.LeftButton) waitForObject( ":MDC v1.0.3.1.nightly_CContactListWidget" ) * This source code was highlighted with Source Code Highlighter .



  4. def main(): waitForObject( ":_QWidget" ) sendEvent( "QResizeEvent" , ":_QWidget" , 22, 22, 769, 474) waitForObject( ":_QGraphicsItem" ) mouseClick( ":_QGraphicsItem" , 221, 193, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) dragItemBy( ":_QLineEdit" , 153, -191, 26, 198, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) sendEvent( "QMouseEvent" , ":_QLineEdit" , QEvent.MouseButtonRelease, 179, 7, Qt.LeftButton, 1) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Ctrl+A>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "squish@mail.ru" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Tab>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "1234" ) waitForObject( ":MDC: _CStartUpWidget" ) sendEvent( "QMoveEvent" , ":MDC: _CStartUpWidget" , 577, 70, 734, 62) mouseClick( ":MDC: _QWidget" , 66, 372, 1, Qt.LeftButton) waitForObject( ":MDC v1.0.3.1.nightly_CContactListWidget" ) * This source code was highlighted with Source Code Highlighter .



  5. def main(): waitForObject( ":_QWidget" ) sendEvent( "QResizeEvent" , ":_QWidget" , 22, 22, 769, 474) waitForObject( ":_QGraphicsItem" ) mouseClick( ":_QGraphicsItem" , 221, 193, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) dragItemBy( ":_QLineEdit" , 153, -191, 26, 198, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) sendEvent( "QMouseEvent" , ":_QLineEdit" , QEvent.MouseButtonRelease, 179, 7, Qt.LeftButton, 1) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Ctrl+A>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "squish@mail.ru" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Tab>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "1234" ) waitForObject( ":MDC: _CStartUpWidget" ) sendEvent( "QMoveEvent" , ":MDC: _CStartUpWidget" , 577, 70, 734, 62) mouseClick( ":MDC: _QWidget" , 66, 372, 1, Qt.LeftButton) waitForObject( ":MDC v1.0.3.1.nightly_CContactListWidget" ) * This source code was highlighted with Source Code Highlighter .



  6. def main(): waitForObject( ":_QWidget" ) sendEvent( "QResizeEvent" , ":_QWidget" , 22, 22, 769, 474) waitForObject( ":_QGraphicsItem" ) mouseClick( ":_QGraphicsItem" , 221, 193, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) dragItemBy( ":_QLineEdit" , 153, -191, 26, 198, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) sendEvent( "QMouseEvent" , ":_QLineEdit" , QEvent.MouseButtonRelease, 179, 7, Qt.LeftButton, 1) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Ctrl+A>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "squish@mail.ru" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Tab>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "1234" ) waitForObject( ":MDC: _CStartUpWidget" ) sendEvent( "QMoveEvent" , ":MDC: _CStartUpWidget" , 577, 70, 734, 62) mouseClick( ":MDC: _QWidget" , 66, 372, 1, Qt.LeftButton) waitForObject( ":MDC v1.0.3.1.nightly_CContactListWidget" ) * This source code was highlighted with Source Code Highlighter .



  7. def main(): waitForObject( ":_QWidget" ) sendEvent( "QResizeEvent" , ":_QWidget" , 22, 22, 769, 474) waitForObject( ":_QGraphicsItem" ) mouseClick( ":_QGraphicsItem" , 221, 193, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) dragItemBy( ":_QLineEdit" , 153, -191, 26, 198, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) sendEvent( "QMouseEvent" , ":_QLineEdit" , QEvent.MouseButtonRelease, 179, 7, Qt.LeftButton, 1) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Ctrl+A>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "squish@mail.ru" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Tab>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "1234" ) waitForObject( ":MDC: _CStartUpWidget" ) sendEvent( "QMoveEvent" , ":MDC: _CStartUpWidget" , 577, 70, 734, 62) mouseClick( ":MDC: _QWidget" , 66, 372, 1, Qt.LeftButton) waitForObject( ":MDC v1.0.3.1.nightly_CContactListWidget" ) * This source code was highlighted with Source Code Highlighter .



  8. def main(): waitForObject( ":_QWidget" ) sendEvent( "QResizeEvent" , ":_QWidget" , 22, 22, 769, 474) waitForObject( ":_QGraphicsItem" ) mouseClick( ":_QGraphicsItem" , 221, 193, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) dragItemBy( ":_QLineEdit" , 153, -191, 26, 198, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) sendEvent( "QMouseEvent" , ":_QLineEdit" , QEvent.MouseButtonRelease, 179, 7, Qt.LeftButton, 1) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Ctrl+A>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "squish@mail.ru" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Tab>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "1234" ) waitForObject( ":MDC: _CStartUpWidget" ) sendEvent( "QMoveEvent" , ":MDC: _CStartUpWidget" , 577, 70, 734, 62) mouseClick( ":MDC: _QWidget" , 66, 372, 1, Qt.LeftButton) waitForObject( ":MDC v1.0.3.1.nightly_CContactListWidget" ) * This source code was highlighted with Source Code Highlighter .



  9. def main(): waitForObject( ":_QWidget" ) sendEvent( "QResizeEvent" , ":_QWidget" , 22, 22, 769, 474) waitForObject( ":_QGraphicsItem" ) mouseClick( ":_QGraphicsItem" , 221, 193, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) dragItemBy( ":_QLineEdit" , 153, -191, 26, 198, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) sendEvent( "QMouseEvent" , ":_QLineEdit" , QEvent.MouseButtonRelease, 179, 7, Qt.LeftButton, 1) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Ctrl+A>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "squish@mail.ru" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Tab>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "1234" ) waitForObject( ":MDC: _CStartUpWidget" ) sendEvent( "QMoveEvent" , ":MDC: _CStartUpWidget" , 577, 70, 734, 62) mouseClick( ":MDC: _QWidget" , 66, 372, 1, Qt.LeftButton) waitForObject( ":MDC v1.0.3.1.nightly_CContactListWidget" ) * This source code was highlighted with Source Code Highlighter .



  10. def main(): waitForObject( ":_QWidget" ) sendEvent( "QResizeEvent" , ":_QWidget" , 22, 22, 769, 474) waitForObject( ":_QGraphicsItem" ) mouseClick( ":_QGraphicsItem" , 221, 193, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) dragItemBy( ":_QLineEdit" , 153, -191, 26, 198, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) sendEvent( "QMouseEvent" , ":_QLineEdit" , QEvent.MouseButtonRelease, 179, 7, Qt.LeftButton, 1) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Ctrl+A>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "squish@mail.ru" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Tab>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "1234" ) waitForObject( ":MDC: _CStartUpWidget" ) sendEvent( "QMoveEvent" , ":MDC: _CStartUpWidget" , 577, 70, 734, 62) mouseClick( ":MDC: _QWidget" , 66, 372, 1, Qt.LeftButton) waitForObject( ":MDC v1.0.3.1.nightly_CContactListWidget" ) * This source code was highlighted with Source Code Highlighter .



  11. def main(): waitForObject( ":_QWidget" ) sendEvent( "QResizeEvent" , ":_QWidget" , 22, 22, 769, 474) waitForObject( ":_QGraphicsItem" ) mouseClick( ":_QGraphicsItem" , 221, 193, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) dragItemBy( ":_QLineEdit" , 153, -191, 26, 198, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) sendEvent( "QMouseEvent" , ":_QLineEdit" , QEvent.MouseButtonRelease, 179, 7, Qt.LeftButton, 1) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Ctrl+A>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "squish@mail.ru" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Tab>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "1234" ) waitForObject( ":MDC: _CStartUpWidget" ) sendEvent( "QMoveEvent" , ":MDC: _CStartUpWidget" , 577, 70, 734, 62) mouseClick( ":MDC: _QWidget" , 66, 372, 1, Qt.LeftButton) waitForObject( ":MDC v1.0.3.1.nightly_CContactListWidget" ) * This source code was highlighted with Source Code Highlighter .



  12. def main(): waitForObject( ":_QWidget" ) sendEvent( "QResizeEvent" , ":_QWidget" , 22, 22, 769, 474) waitForObject( ":_QGraphicsItem" ) mouseClick( ":_QGraphicsItem" , 221, 193, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) dragItemBy( ":_QLineEdit" , 153, -191, 26, 198, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) sendEvent( "QMouseEvent" , ":_QLineEdit" , QEvent.MouseButtonRelease, 179, 7, Qt.LeftButton, 1) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Ctrl+A>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "squish@mail.ru" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Tab>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "1234" ) waitForObject( ":MDC: _CStartUpWidget" ) sendEvent( "QMoveEvent" , ":MDC: _CStartUpWidget" , 577, 70, 734, 62) mouseClick( ":MDC: _QWidget" , 66, 372, 1, Qt.LeftButton) waitForObject( ":MDC v1.0.3.1.nightly_CContactListWidget" ) * This source code was highlighted with Source Code Highlighter .



  13. def main(): waitForObject( ":_QWidget" ) sendEvent( "QResizeEvent" , ":_QWidget" , 22, 22, 769, 474) waitForObject( ":_QGraphicsItem" ) mouseClick( ":_QGraphicsItem" , 221, 193, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) dragItemBy( ":_QLineEdit" , 153, -191, 26, 198, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) sendEvent( "QMouseEvent" , ":_QLineEdit" , QEvent.MouseButtonRelease, 179, 7, Qt.LeftButton, 1) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Ctrl+A>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "squish@mail.ru" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Tab>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "1234" ) waitForObject( ":MDC: _CStartUpWidget" ) sendEvent( "QMoveEvent" , ":MDC: _CStartUpWidget" , 577, 70, 734, 62) mouseClick( ":MDC: _QWidget" , 66, 372, 1, Qt.LeftButton) waitForObject( ":MDC v1.0.3.1.nightly_CContactListWidget" ) * This source code was highlighted with Source Code Highlighter .



  14. def main(): waitForObject( ":_QWidget" ) sendEvent( "QResizeEvent" , ":_QWidget" , 22, 22, 769, 474) waitForObject( ":_QGraphicsItem" ) mouseClick( ":_QGraphicsItem" , 221, 193, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) dragItemBy( ":_QLineEdit" , 153, -191, 26, 198, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) sendEvent( "QMouseEvent" , ":_QLineEdit" , QEvent.MouseButtonRelease, 179, 7, Qt.LeftButton, 1) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Ctrl+A>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "squish@mail.ru" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Tab>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "1234" ) waitForObject( ":MDC: _CStartUpWidget" ) sendEvent( "QMoveEvent" , ":MDC: _CStartUpWidget" , 577, 70, 734, 62) mouseClick( ":MDC: _QWidget" , 66, 372, 1, Qt.LeftButton) waitForObject( ":MDC v1.0.3.1.nightly_CContactListWidget" ) * This source code was highlighted with Source Code Highlighter .



  15. def main(): waitForObject( ":_QWidget" ) sendEvent( "QResizeEvent" , ":_QWidget" , 22, 22, 769, 474) waitForObject( ":_QGraphicsItem" ) mouseClick( ":_QGraphicsItem" , 221, 193, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) dragItemBy( ":_QLineEdit" , 153, -191, 26, 198, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) sendEvent( "QMouseEvent" , ":_QLineEdit" , QEvent.MouseButtonRelease, 179, 7, Qt.LeftButton, 1) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Ctrl+A>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "squish@mail.ru" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Tab>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "1234" ) waitForObject( ":MDC: _CStartUpWidget" ) sendEvent( "QMoveEvent" , ":MDC: _CStartUpWidget" , 577, 70, 734, 62) mouseClick( ":MDC: _QWidget" , 66, 372, 1, Qt.LeftButton) waitForObject( ":MDC v1.0.3.1.nightly_CContactListWidget" ) * This source code was highlighted with Source Code Highlighter .



  16. def main(): waitForObject( ":_QWidget" ) sendEvent( "QResizeEvent" , ":_QWidget" , 22, 22, 769, 474) waitForObject( ":_QGraphicsItem" ) mouseClick( ":_QGraphicsItem" , 221, 193, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) dragItemBy( ":_QLineEdit" , 153, -191, 26, 198, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) sendEvent( "QMouseEvent" , ":_QLineEdit" , QEvent.MouseButtonRelease, 179, 7, Qt.LeftButton, 1) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Ctrl+A>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "squish@mail.ru" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Tab>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "1234" ) waitForObject( ":MDC: _CStartUpWidget" ) sendEvent( "QMoveEvent" , ":MDC: _CStartUpWidget" , 577, 70, 734, 62) mouseClick( ":MDC: _QWidget" , 66, 372, 1, Qt.LeftButton) waitForObject( ":MDC v1.0.3.1.nightly_CContactListWidget" ) * This source code was highlighted with Source Code Highlighter .



  17. def main(): waitForObject( ":_QWidget" ) sendEvent( "QResizeEvent" , ":_QWidget" , 22, 22, 769, 474) waitForObject( ":_QGraphicsItem" ) mouseClick( ":_QGraphicsItem" , 221, 193, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) dragItemBy( ":_QLineEdit" , 153, -191, 26, 198, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) sendEvent( "QMouseEvent" , ":_QLineEdit" , QEvent.MouseButtonRelease, 179, 7, Qt.LeftButton, 1) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Ctrl+A>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "squish@mail.ru" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Tab>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "1234" ) waitForObject( ":MDC: _CStartUpWidget" ) sendEvent( "QMoveEvent" , ":MDC: _CStartUpWidget" , 577, 70, 734, 62) mouseClick( ":MDC: _QWidget" , 66, 372, 1, Qt.LeftButton) waitForObject( ":MDC v1.0.3.1.nightly_CContactListWidget" ) * This source code was highlighted with Source Code Highlighter .



  18. def main(): waitForObject( ":_QWidget" ) sendEvent( "QResizeEvent" , ":_QWidget" , 22, 22, 769, 474) waitForObject( ":_QGraphicsItem" ) mouseClick( ":_QGraphicsItem" , 221, 193, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) dragItemBy( ":_QLineEdit" , 153, -191, 26, 198, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) sendEvent( "QMouseEvent" , ":_QLineEdit" , QEvent.MouseButtonRelease, 179, 7, Qt.LeftButton, 1) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Ctrl+A>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "squish@mail.ru" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Tab>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "1234" ) waitForObject( ":MDC: _CStartUpWidget" ) sendEvent( "QMoveEvent" , ":MDC: _CStartUpWidget" , 577, 70, 734, 62) mouseClick( ":MDC: _QWidget" , 66, 372, 1, Qt.LeftButton) waitForObject( ":MDC v1.0.3.1.nightly_CContactListWidget" ) * This source code was highlighted with Source Code Highlighter .



  19. def main(): waitForObject( ":_QWidget" ) sendEvent( "QResizeEvent" , ":_QWidget" , 22, 22, 769, 474) waitForObject( ":_QGraphicsItem" ) mouseClick( ":_QGraphicsItem" , 221, 193, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) dragItemBy( ":_QLineEdit" , 153, -191, 26, 198, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) sendEvent( "QMouseEvent" , ":_QLineEdit" , QEvent.MouseButtonRelease, 179, 7, Qt.LeftButton, 1) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Ctrl+A>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "squish@mail.ru" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Tab>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "1234" ) waitForObject( ":MDC: _CStartUpWidget" ) sendEvent( "QMoveEvent" , ":MDC: _CStartUpWidget" , 577, 70, 734, 62) mouseClick( ":MDC: _QWidget" , 66, 372, 1, Qt.LeftButton) waitForObject( ":MDC v1.0.3.1.nightly_CContactListWidget" ) * This source code was highlighted with Source Code Highlighter .



  20. def main(): waitForObject( ":_QWidget" ) sendEvent( "QResizeEvent" , ":_QWidget" , 22, 22, 769, 474) waitForObject( ":_QGraphicsItem" ) mouseClick( ":_QGraphicsItem" , 221, 193, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) dragItemBy( ":_QLineEdit" , 153, -191, 26, 198, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) sendEvent( "QMouseEvent" , ":_QLineEdit" , QEvent.MouseButtonRelease, 179, 7, Qt.LeftButton, 1) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Ctrl+A>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "squish@mail.ru" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Tab>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "1234" ) waitForObject( ":MDC: _CStartUpWidget" ) sendEvent( "QMoveEvent" , ":MDC: _CStartUpWidget" , 577, 70, 734, 62) mouseClick( ":MDC: _QWidget" , 66, 372, 1, Qt.LeftButton) waitForObject( ":MDC v1.0.3.1.nightly_CContactListWidget" ) * This source code was highlighted with Source Code Highlighter .



  21. def main(): waitForObject( ":_QWidget" ) sendEvent( "QResizeEvent" , ":_QWidget" , 22, 22, 769, 474) waitForObject( ":_QGraphicsItem" ) mouseClick( ":_QGraphicsItem" , 221, 193, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) dragItemBy( ":_QLineEdit" , 153, -191, 26, 198, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) sendEvent( "QMouseEvent" , ":_QLineEdit" , QEvent.MouseButtonRelease, 179, 7, Qt.LeftButton, 1) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Ctrl+A>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "squish@mail.ru" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Tab>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "1234" ) waitForObject( ":MDC: _CStartUpWidget" ) sendEvent( "QMoveEvent" , ":MDC: _CStartUpWidget" , 577, 70, 734, 62) mouseClick( ":MDC: _QWidget" , 66, 372, 1, Qt.LeftButton) waitForObject( ":MDC v1.0.3.1.nightly_CContactListWidget" ) * This source code was highlighted with Source Code Highlighter .



def main(): waitForObject( ":_QWidget" ) sendEvent( "QResizeEvent" , ":_QWidget" , 22, 22, 769, 474) waitForObject( ":_QGraphicsItem" ) mouseClick( ":_QGraphicsItem" , 221, 193, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) dragItemBy( ":_QLineEdit" , 153, -191, 26, 198, 1, Qt.LeftButton) waitForObject( ":_QLineEdit" ) sendEvent( "QMouseEvent" , ":_QLineEdit" , QEvent.MouseButtonRelease, 179, 7, Qt.LeftButton, 1) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Ctrl+A>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "squish@mail.ru" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "<Tab>" ) waitForObject( ":MDC: _QGraphicsView" ) type( ":MDC: _QGraphicsView" , "1234" ) waitForObject( ":MDC: _CStartUpWidget" ) sendEvent( "QMoveEvent" , ":MDC: _CStartUpWidget" , 577, 70, 734, 62) mouseClick( ":MDC: _QWidget" , 66, 372, 1, Qt.LeftButton) waitForObject( ":MDC v1.0.3.1.nightly_CContactListWidget" ) * This source code was highlighted with Source Code Highlighter .







このテキストを変更せずに使用することは確かに可能であり、広範なタスクではこれで十分です。これにより、開発者だけでなく資格のない従業員でもSquishを使用できますが、このコードはタスクに適していません。



Squishは、シンボリック名と実際の名前の2種類のオブジェクト命名をサポートしています。 テストテキストを自動的に作成する場合、Squishはシンボル名を使用しますが、これは必ずしも便利ではありません。 したがって、たとえば、コンタクトシートウィンドウは次のように自動的に検出されます。



シンボリック名:MDC v1.0.3.1.nightly_CContactListWidget



ここで、MDC v1.0.3.1.nightlyはウィンドウのタイトルであり、CContactListWidgetはこのウィジェットのタイプです。 ウィンドウのタイトルには明らかに変更されるバージョンがあり、この方法で設定されたオブジェクトは決して見つかりません。 この場合、本名を使用します:{name = 'contactList' type = 'CContactListWidget' visible = '1'}。 nameはsetObjectNameを介してMDCコードの定数として設定されます







  1. m_widget = new CContactListWidget(this_ptr);
  2. m_widget-> setObjectName( "contactList" );
*このソースコードは、 ソースコードハイライターで強調表示されました。




したがって、ウィンドウのタイトルに関係なく、必要なウィジェットをいつでも見つけることができ、テストの最終コードは次のようになります。







  1. def main():
  2. waitForObject( ":_QWidget"
  3. sendEvent( "QResizeEvent"":_QWidget"22、22、629、418
  4. waitForObject( ":_QLineEdit"
  5. dragItemBy( ":_QLineEdit" 、140、-183、26、198、1、Qt.LeftButton)
  6. waitForObject( ":_QLineEdit"
  7. sendEvent( "QMouseEvent"":_QLineEdit" 、QEvent.MouseButtonRelease、166、15、Qt.LeftButton、1)
  8. waitForObject( ":MDC: QGraphicsView Authorization"
  9. タイプ( ":MDC:QGraphicsView_authorization""<Ctrl + A>"
  10. waitForObject( ":MDC: QGraphicsView Authorization"
  11. タイプ( ":MDC:Authorization_QGraphicsView""squish@mail.ru"
  12. waitForObject( ":MDC: QGraphicsView Authorization"
  13. タイプ( ":MDC:QGraphicsView Authorization""<Tab>"
  14. waitForObject( ":MDC: QGraphicsView Authorization"
  15. タイプ( ":MDC:QGraphicsView authorization""1234"
  16. mouseClick( ":MDC:QWidget_authorization" 、154、369、1、Qt.LeftButton)
  17. waitForObject( ":{name = 'contactList' type = 'CContactListWidget' visible = '1'}"
*このソースコードは、 ソースコードハイライターで強調表示されました。




ログイン、パスワード、クリック座標を置き換えて、jabberとicqに接続するためのテストスクリプトを簡単に作成できます。 以下のビデオは、3つのテストケース(icq、mail.ru、jabber)で構成されるテストスーツの発売を示しています







その後、次の各キャンペーンでユニットテストが完了した後にこのテストスーツを実行することができるため、常にこのような美しい画像を手に入れることができます。







しかし、これは別の話であり、興味深い場合は喜んで書きます。



この記事では、同期プリミティブなどの問題に触れることなく、APIを介してQtオブジェクトを操作することなく、Squishの機能について簡単に触れました。 私はこれらのことについて次の投稿に書くつもりです。




All Articles