コードの再利用
それは避けられません:テストにおいて繰り返しは生活の事実です。幸いなことに、スクリプトやハンドラーが繰り返し作業を代行する簡単な方法がいくつかあります。
他のスクリプトからのスクリプトの呼び出し
コードを再利用する最も一般的な方法の一つは、別のスクリプトからスクリプトを呼び出すことです。スクリプトを呼び出すには、あなたのコードにスクリプトの名前を挿入し、その後にスクリプトが必要とする任意のパラメータを続けます。スクリプトの呼び出しは、スクリプト自体がコマンドまたは関数であるかのように扱うことができます。他のスクリプトを呼び出す詳細な情報については、他のスクリプトとハンドラーの実行を参照してください。
以下は、スクリプト内からスクリプトを呼び出す例です:
CycleWindows // 単純なスクリプト名をコマンドとして呼び出します
ConnectionScript "Old SUT", "New SUT" // パラメータ付きの単純なスクリプト名を呼び出します
put CaptureTheScreen("SomePrefix",1) into myScreenCapture
// パラメータ付きの関数としてスクリプトを呼び出し、結果を変数に入れます
コマンド呼び出しを使用するか、関数呼び出しを使用するかは、スクリプト自体に依存します。両方のタイプは入力パラメータを取ることができ、その場合呼び出されるスクリプトはparams
宣言で始まる必要があります。関数呼び出しはまた値を返すことができ、その場合呼び出されるスクリプトはreturn
ステートメントを含む必要があります。
もしスペースや特殊文字のない単純なスクリプト名を使用し、スクリプトを同じスイートやヘルパースイートに保存している場合、スクリプト名を直接使用することができます。上記の例を参照してください。
関連しないスイートにあるスクリプトや、その名前にスペースや特殊文字が含まれているスクリプトについては、Run
コマンドを入力し、その後にスクリプトのパスを入力します:
Run "/Users/Seiji/Documents/EggPlant Suites/Validation.suite/Scripts/ConnectionScript"
// 関連 しないスイートからスクリプトを開くためにRunコマンドを呼び出します
他のスクリプトからスクリプトを呼び出すこの能力のため、特定のタスクやアクションを実行するセグメントでスクリプトを書くことを考えると便利です。この「モジュラー」アプローチは、あなたが異なるコンテキストでスクリプトを再利用する最大の機会を提供します。そのような場合、あなたの「メイン」スクリプトはテストや環境に特化したコードを含むことになりますが、汎用のタスクを完了するために別のスクリプトを呼び出します。
ハンドラーとヘルパースイートの使用に関するより詳細な情報は、これらは共にコードの再利用とモジュラーデザインを支援する機能であることを記載しています、下記を参照してください。
ハンドラ
同じスクリプト内でコードを再利用するために、handler
を書くことができます。これは基本的にサブスクリプトで す。ハンドラーは、あなたが他のスクリプトを呼び出すかのように、いつでも呼び出すことができる主要なスクリプトの一部です。
例:CaptureTheScreen
ハンドラ
to CaptureTheScreen prefix, count // ハンドラーの開始
set fileName to prefix & "ScreenShot" & count // prefixScreenShotCountをfileNameに入れます
set tempFile to "/tmp/" & fileName // "/tmp/filename"をtempFileに入れます
CaptureScreen tempFile //スクリーンショットをキャプチャします
return fileName // fileNameを関数の戻り値として設定します
end CaptureTheScreen //ハンドラーの終了
ハンドラの結果の返却
スクリプトやハンドラが値を返す場合、このような場合、次の行でResults
関数を呼び出すことでその値にアクセスできます。したがって、上記の例を使用して、以下に示すようにハンドラを呼び出し、結果にアクセスすることができます。
例: ハンドラの結果の返却
CaptureTheScreen "MacTest", 6 // CaptureTheScreenハンドラを呼び出します
Set newFile to the result // 返された値を変数に入れます
コマンドまたは関数としてのハンドラ
CaptureTheScreen
ハンドラは汎用のハンドラなので、関数としても呼び出すことができます。主な使い方の違いは、コマンドはそれ自体が完全な文であり、それが値を返すかどうかに関係なく使用できる一方、関数は式の一部として呼び出さなければならない点です。
例: コマンドと関数としてのハンドラの呼び出し
CaptureTheScreen "MacTest", 6 // コマンドとして呼び出され、ハンドラが実行されます
put CaptureTheScreen ("MacTest",6) // 関数として呼び出され、ハンドラの値を返します。括弧に注意してください。
別のスクリプトからハンドラを呼び出す
別のスクリプトからハンドラを呼び出すには3つの方法があります:
- 所有格の
‘s
を含むスクリプト名を呼び出し、その後にハンドラの名前とそのパラメータを続けます。 - スクリプトの名前を呼び出し、その後にドットとハンドラの名前を追加します。
- ハンドラの名前を呼び出し、その後に
of
とスクリプトの名前を続けます。
例: 別のスクリプトからハンドラを呼び出す
run Logging's CaptureTheScreen "MacTest", 6 // 所有格の'sとスクリプト名を使用してハンドラを呼び出します
run Logging.CaptureTheScreen "MacTest", 6 // script.handlerの形式でハンドラを呼び出します
run CaptureTheScreen of Logging "MacTest", 6 // handler "of" scriptでハンドラを呼び出します
コードリファクタリング
スクリプトを書いているうちに、スクリプトの一部が他のコンテキストや他のスクリプトで役立つ可能性があることに気づくかもしれません。たとえば、デスクトップに戻るといった、頻繁に繰り返す必要があるSUT上のアクションを実行する手順を書いた場合などです。スクリプトの異なるポイントでアクションを実行する必要があるかもしれませんし、同じSUTを異なるテストで使用している場合、同じ手順を異なるスクリプトで使用することができるかもしれません。
新しいスクリプトまたはハンドラへのコードの抽出
Extract Code 機能を使用して、既存のコードセクションを抽出して新しいスクリプトやハンドラを作成することができます。これにより、単純または複雑なコードセクションを新しいスクリプトに移動することができます。これらのスクリプトは、多くの異なるコンテキストで再利用できるように、モジュラーにすることを目指してください。
開始する前に
- グローバル変数とユニバーサル変数の抽出: コードブロックに明示的なグローバル変数やユニバーサル変数が含まれている場合、新しいコードにそれらを含めるか除外するかを選択できます。大きなスクリプトをいくつかの小さな部分に分割している場合、それらを含めることは理にかなっています。複数の場所から呼び出される再利用可能なスクリプトやハンドラを作成している場合、それらを除外することがおそらくより良い考えです。このアプローチは、新しいコンポーネントをできるだけクリーンで、焦点を絞り、再利用可能に保つのに役立ちます。
- 他の変数の抽出: 抽出することを選択したコードに、コードのそのセクションの外で参照される変数が含まれている場合:
-
選択したものの中で使用されている変数の中で、スクリプトの
早い段階で存在する
ものは、新しいスクリプトのparams
宣言として追加されます。新しいスクリプトはコマンドとして呼び出されるため、スクリプトエディタでは、変数は新しいスクリプト名の後にパラメータとしてリストさ れます。ExtractedScript MyVar
-
スクリプトの後で
存在する
選択範囲で使用されている変数は、新しいスクリプトのreturn
宣言として追加されます。この場合、新しいスクリプトはコマンドではなく関数として呼び出され、返された値が変数に代入されます:extractedScript(MyVar) を MyOutVar に入れる
-