learn advanced soapui groovy scripting concepts soapui tutorial 9
以前のSoapUIチュートリアルは、SoapUIとそのプログラミング概念の紹介でした。これから、より高度なGroovyスクリプトの概念に移ります。これでいよう 条件付きフローステートメント –ブールステートメントと反復ステートメントの両方。次に、配列コレクションに移ります。
これは私たちの9番目のチュートリアルです SoapUIチュートリアルシリーズ 。
条件付きステートメントは、実行のフローを制御するために使用されます。 Groovyのさまざまなタイプの条件ステートメントを次に示します。
学習内容:
#1。制御ステートメントまたは論理ステートメント:
これらのステートメントは、論理条件に基づいてtrueまたはfalseになります。 AND、OR、NOTです。使用される記号は、「&&(and)」、「|」|です。と ‘! (感嘆)」それぞれ。動作は真理値表に記載されているとおりです。
「および」演算子の真理値表:

「OR」演算子の真理値表:

否定目的の「NOT」演算子
条件文: プログラミング言語は、次の条件文をサポートしています。
- If…elseステートメント
- If…elseif…elseステートメント
- 三項演算子
- Switchステートメント
A)if…elseブロック構文:
もし
{{
}
そうしないと
{{
}
この構文では、trueが満たされると、指定されたステートメントが実行されます。ブロックに複数の行が含まれている場合は、ステートメントを中括弧で囲む必要があります。これは、条件に基づいてブロック全体を実行するように指示します。
サンプルのコードスニペットを見てください。
int a=100 int b=200 if (a>b) { log.info('B is greater than A'); } else { log.info('A is greater or both are equal'); } アン もし…そうでなければ… ステートメントには、ELSEブロックを1つだけ含める必要があります。
B)複数の条件付きブロック:if…elseif…else構文
もし
{{
}
それ以外の場合
{{
}
そうしないと
{{
}
If…elseif…else ステートメントはと少し異なります もし…そうでなければ… ステートメント-それが持っているという点で それ以外の場合 ブロック。このブロックは、複数の条件を追加するために使用されます。次の例を見てください。
int a=100 int b=200 int c=300 if (a>b && a>c) { log.info('A is greater than B and C'); } else if (b>a && b>c) { log.info('B is greater than A and C'); } else { log.info('C is greater than A and B or All are equal numbers'); } また、上記のスクリプトの出力スクリーンショットを見てください。また、これをブール演算子の例のリファレンスとしても使用してください。

C)三項演算子:
この演算子は次のように機能します もし…そうでなければ ステートメント。疑問符(TRUE)とFALSE /デフォルトステートメントのコロンなどの2つのオペランドがあります。
def A = 100
def B =(A> 100) ? 「合格」:「不合格」
log.info(B)
PC用の最高の無料mp3ダウンローダー
上記のスクリプトのスクリーンショットは次のとおりです。

D)スイッチケース: このステートメントは、異なる値を持つ複数の条件分岐を許可します。また、クラスオブジェクト参照、正規表現、配列、リストなどのコレクションの比較もサポートしています。
スイッチ
{{
ケース:
;
ブレーク;
ケース:
;
ブレーク;
デフォルト:
;
}
ザ・ 場合 ステートメントは値を スイッチ ケース値。一致する場合は、対応するケースブロックが実行されます。ブロックが実行されたら、「break」キーワードで停止する必要があります。 caseステートメントの最後で「break」キーワードを見逃した場合、実行は次のcaseステートメントに移されます-そしてそれは必要ないかもしれません。いずれの場合も当てはまらない場合は、 デフォルト ブロックが実行されます。 Groovyは、Javaライブラリに組み込まれているため、すべての主要な演算子とキーワードをサポートしていることに注意してください。
def country='India' switch(country) { case 'Japan': log.info('Country matched with 1st case statement'); break; case 'Australia': log.info('Country matched with 2st case statement'); break; case 'India': log.info('Country matched with 3st case statement'); break; default: log.info('None of the matches available :('); } Here’s the output screenshot for the above script.
#2。ループまたは反復ステートメント:
これらは必要なときにいつでも繰り返しを可能にし、データ駆動型テストに特に役立ちます。
たとえば、Excelファイルにいくつかの郵便番号があると仮定します。すべての郵便番号をExcelファイルから1つずつ取得し、サービスに渡すには、 GetSuppliersZipcode 、反復ステートメントを使用できます。 SoapUIは、データソースおよびデータソースループのテストステップと呼ばれる代替機能も提供します(SoapUI Proの試用版およびライセンス版でのみ使用可能です)。
groovyスクリプトでは、次の反復ステートメントを使用できます。
- Forループ
- whileループ
Forループ:
PC用の最高の無料のYouTubeダウンローダー
ために (; ; )
{{
;
}
上記の構文では、初期化はループの開始点を示し、条件に基づいてループは実行を続行または停止します。
以下のスクリプトを参照してください
for(int i = 1; i<=10; i++)
{{
log.info( ‘Loop Iterated‘ + i + ‘times’);
}
上記のスクリプトは、次のスクリーンショットに示すような結果を生成します。

ここで、実際のテストの世界で制御ステートメントと反復ステートメントを使用しましょう。以下の手順に従ってください。
- 希望の名前でテストケースを追加します。 「T9_GetSupplierByZipCode_TestCase」として作成しました。
- 次に、「Property_Zipcode」という名前のプロパティを追加します
- 「GetSupplierByZipCode」サービスのテストリクエストステップを追加し、スクリーンショットに示すようにリクエストにプロパティ名を入力します。

次のスクリーンショットに示すように、groovyスクリプトのテストステップを追加します。

groovyスクリプトエディターで、次のスクリプトを記述します。
for (int zipCode=1; zipCode5) { log.info('**************Stopped Execution*************'); break; } testStep.run(testRunner,context); log.info('Executed ' + zipCode + ' times') } 以下の結果は、ログとサービス応答画面に表示されます。
(画像をクリックすると拡大表示されます)

「while」ループ:
構文:
一方
{{
;
}
上記のロジックは、「while」ループを使用して実装することもできます。
したがって、要点は、反復ステートメントを使用して次のことができるということです。
- テストケースまたはテストステップを繰り返し実行する
- 制御ステートメントを介して実行のフローを制御します。
#3。配列コレクション:
配列コレクションは、単一の変数またはオブジェクトに複数の値を格納するのに役立ちます。配列インデックスはデフォルトでゼロから始まり、配列に格納されている対応する値にアクセスするには、そのインデックスを配列名とともに使用する必要があります。 groovyスクリプトで配列を宣言する構文:
arrayName = new Object (5)または、
arrayName = new Object (10) ()または、
arrayName = new Object (10) (10) ()
注意 :配列を宣言するときに、初期サイズを指定する必要があります。そうしないと、コンパイルエラーがスローされます。これは、1次元配列の簡単な例です。
ArrayObj =新しいオブジェクト(5);
ArrayObj (0) =“ Testcase1”;
ArrayObj (1) =“ Testcase2”;
ArrayObj (2) =“ Testcase3”;
ArrayObj (3) =“ Testcase4”;
ArrayObj (4) =“ Testcase5”;
次に、これを通常のテスト手順で実装しましょう。したがって、次のスクリーンショットに示すように、プロジェクトテストスイートの下にプロパティ、テストリクエスト、およびスクリプトテストステップを追加します。

次に、スクリプトテストステップをダブルクリックして、次のスクリプトを記述します。
def MAX_LIMIT = 5 def zipCodes = new Object(MAX_LIMIT) zipCodes(0) = '92704' zipCodes(1) = '99362' zipCodes(2) = '31401' zipCodes(3) = '90247' zipCodes(4) = '87102' int i=0; while (i<5) { if (i<5) { testRunner.testCase.testSteps('Properties'). setPropertyValue('Property_Zipcode',zipCodes(i)); def testStep = testRunner.testCase.testSteps('GetSupplierByZipCode'); testStep.run(testRunner,context); log.info('Loop executed ' + i + ' times'); } i++; } log.info('Testcase execution is completed....'); In this script, we initialized array object as 5 and assigned five zip codes in each array location respectively. Next part of the script is iterative block. Here we iterate the loop up to 5 times. Each time array value will be assigned to the property and then move to GetSupplierByZipCode web service to pass this array value in the request. After that, service step will be executed with the zip code. Finally we will get the following message in the log as shown in the screenshot.
したがって、配列は、異なるタイプの複数の要素を処理するのに非常に役立ちます。より多くの練習はより良い理解と使いやすさを促進します。
結論
これは、IF…ELSE、switch、およびternaryステートメントを含む条件付きまたは論理ブロックの例を含む全体的な紹介でした。これらのステートメントは、AND、OR、NOTなどの論理演算子によって制御されます。 「スイッチ」ブロックと比較すると、「if」ブロックは高速でシンプルです。配列のような複数のコレクションを処理してテストプロセスを繰り返すには、ループステートメントが重要です。
次のSoapUIチュートリアル#10 :次の投稿では、「SoapUIでのオブジェクト指向Groovyスクリプト」について学習します。
次のSoapUIGroovyスクリプトチュートリアルでは、さらに便利な概念が登場します。読み続けて、下のコメントであなたの経験と質問を共有してください。
推奨読書
- SoapUI Groovyスクリプトで例外を処理する方法– SoapUIチュートリアル#11
- SoapUIで基本的なGroovyスクリプトを作成する方法-SoapUiチュートリアル#6
- SoapUI Groovyスクリプトでプロパティを使用する方法-SoapUIチュートリアル#7
- 初心者向けの詳細なEclipseチュートリアル
- プロオーディエンス向けのSoapUIProの4つの重要な機能– SoapUIチュートリアル#12
- 15以上のSoapUIチュートリアル:最高のWebサービスAPIテストツール
- ステップバイステップのSoapUIダウンロードおよびインストールプロセス– SoapUIチュートリアル#3
- リクエストとレスポンスのデータをファイルに保存するためのクイックSoapUIガイド– SoapUIチュートリアル#15