understanding variable scopes
このチュートリアルでは、Postmanツールでサポートされているさまざまなタイプの変数と、Postmanリクエストおよびコレクションの作成および実行中にそれらを使用する方法について説明します。
また、環境ファイルの概念に触れ、コレクションの作成および実行時にそれらをどのように活用できるかを確認します。
=> ここで完璧な郵便配達員トレーニングガイドをチェックしてください。
学習内容:
Postmanの変数とは何ですか?
変数は、他のプログラミング言語と同様に、いくつかの値またはいくつかの式の結果を保持するためのプレースホルダーにすぎません。
例えば 、文字列値「helloworld!」を保持するC#/ Javascriptの変数宣言について考えてみます。これで、この文字列が必要なときはいつでも、誰かが変数の名前を使用して、実際の文字列として値を置き換えることができます。
var z='hello world!'
Postmanの変数をさらに深く掘り下げてみましょう。
ここでの変数は通常、リクエストボディの値を置き換え、レスポンスボディのアサーションを作成し、それらをプレリクエストスクリプトで使用して、必要に応じて前処理ロジックを処理する必要があるコンテキストで使用されます。
まず、Postmanのさまざまな変数スコープを理解してみましょう。スコープは、変数の存続期間とアクセス可能性に他なりません。これは、Javaなどのプログラミング言語で使用されているスコープの概念に似ています。
例えば 、変数はグローバルスコープを持つことができます。つまり、メソッドまたはプログラムがアクティブになるまで、任意のクラス/メソッドが変数にアクセス/変更できます。
同様に、メソッドで宣言されたローカル変数は、その関数が実行されるまでしか使用できないため、特定のスコープを持つさまざまなタイプが存在する可能性があります。同様に、forループで宣言された変数は、そのループの実行中にのみ使用できます。
これがビデオチュートリアルです:
Postmanは、以下に示すように5種類の可変スコープを提供しています。
例を含むUNIXシェルスクリプトコマンド
- グローバル
- コレクション
- 環境
- データ
- 地元
注意: さまざまなタイプのPostman変数はすべて、Postmanコンソールを使用して追加/削除でき、それらのほとんどはスクリプトを使用してアクセスおよび更新できることを理解することが重要です。
これらの変数のタイプとスコープのそれぞれを詳細に理解してみましょう!!
Postmanの変数タイプ
#1)グローバル
グローバル変数とは何ですか?いつ使用する必要がありますか?
グローバル変数は汎用変数であり、ほとんどの場合回避し、ラピッドプロトタイピングの要件にのみ使用する必要があります。これらの変数は、それらが属するコレクションに関係なく、Postmanコンソールで使用可能なすべての要求で使用できます。
これらの変数は、Java、C#などのプログラミング言語のグローバルスコープ変数に類似しており、プログラムのすべての部分からグローバル変数にアクセスできます。ただし、コードの各セクションがグローバル変数値にアクセス/変更できるため、これらの変数は非常に信頼性が低くなります。
グローバル変数の操作
グローバル変数を操作するには、PostmanコンソールおよびPostmanリクエストのスクリプトを使用して変数を制御できます。
Postmanコンソールから、環境セレクターの近くにある「Eye」アイコンをクリックすると、現在のグローバル変数に関する詳細を示すポップアップ/コンテキストウィンドウが開きます。
次に、変数名とその初期値を入力して、新しい変数を作成します。
初期値は、その変数に対してデフォルトで保持されるものであり、現在の値は、これらの変数を使用しているリクエストで設定または更新されるときに変化し続けます。
スクリプトを使用すると、「pm」を使用して環境変数にアクセスできます。グローバル」
以下のコマンドを使用して、「testVar」という名前のグローバル変数の値を取得します。
pm.globals.get('testVar');
以下のコマンドを使用して、「testVar」という名前のグローバル変数の値を設定します。
pm.globals.set('testVar', 'Hello Postman tutorial!');
スクリプトを使用してグローバル変数を削除する場合は、以下で説明するように、unset関数を使用できます。
pm.globals.unset('testVar');
スクリプトを介してすべてのグローバル変数をクリアするには、以下の関数を使用できます。
pm.globals.clear();
#2)コレクション
コレクション変数とは何ですか?いつ使用する必要がありますか?
コレクション変数は、コレクションスコープで変数を定義するために使用されます。ご存知のように、Postmanのコレクションは、Postmanリクエストのグループに他なりません。
コレクション変数は、特定のコレクション内のコレクションまたはリクエストの実行中に変更されません。基本的に、コレクション変数は、リクエストの実行中に取得され、更新されない可能性があります。
コレクション変数は、コレクションの一部であり、他のリクエストではないリクエストによってのみアクセスできることに注意してください。
それらはどのように作成されますか?
コレクション変数は、Postmanアプリケーションコンソールを使用してのみ作成および/または削除できます。
#1) 変数を追加するコレクションを選択します。右クリックして(編集)を選択します。
#二) 次に、 「変数」 タブをクリックして、追加する必要のあるコレクション変数を追加します。
コレクション変数の操作
リクエスト内で使用する場合、コレクション変数は汎用のPostmanスクリプトを使用して参照でき、最も近いスコープのルールに応じて、コレクションスコープよりも近い変数が他にない場合は、コレクション変数が返されます。
pm.variables.get('testCollectionVar');
リクエストビルダーの一部としてPostman変数を使用するには、以下に示すように、二重中括弧構文を使用するだけです。
#3)環境
環境変数とは何ですか?
環境変数は、Postmanで最も頻繁に使用される種類の変数です。
これらは、リクエストの実行に使用されている選択された環境に関連付けられています。それらのスコープはグローバル変数より狭いですが、コレクション変数より広いです。
環境変数をいつ使用するか?
- 環境変数は、さまざまなサーバーで作業する場合に理想的です。 例えば 、一般的に、プロジェクトで作業している間は、dev、test、stage、prodなどのさまざまな環境で作業します。これらの環境は主にURLだけが異なり、APIエンドポイントリクエストURLの残りの部分は同じままです。
この種のシナリオでは、アプリケーションがサポートするさまざまな環境に一致する環境ファイルを作成できます。 例えば、 dev、testなどのさまざまな環境の環境変数。 - あるリクエストから別のリクエストにデータや情報を渡す必要がある場合、環境変数はローカル変数よりもスコープが広く、グローバル変数よりもスコープが狭いため、適切な選択です。
それらはどのように作成されますか?
コレクション変数とは異なり、環境変数はコンソールとスクリプト自体の両方から作成できます。
コンソールから環境変数を作成するには、環境変数のコンテナに過ぎないアクティブな環境を作成する必要があります。以下のスクリーンショットを参照して、新しい環境を作成し、それに環境変数を追加してください。
今、あなたはクリックすることができます '追加' 新しい環境を保存します。保存したら、クリックするだけです。 '設定' 新しい環境を管理/追加するためのアイコン。
良いボイスチェンジャーとは何ですか
作成した環境を使用するには、環境リストのドロップダウンから適切な環境を選択して、使用する環境を選択する必要があります。
環境変数の操作
コレクション変数とグローバル変数と同様に、環境変数はスクリプトを介してプログラムで操作でき、二重中括弧構文を使用してURLまたはリクエスト本文の一部として直接使用できます。
環境セレクターで適切な環境を選択すると、下のスクリーンショットに示すように、二重中括弧構文を使用して環境変数にアクセスできます。
スクリプトを介して環境変数を使用するには、次を使用できます。 pm.environment.get そして pm.environment.set 環境変数をそれぞれフェッチおよび追加/変更します。
pm.environment.get('testEnvVar') pm.environment.set('testEnvVar',10)
ここでは、pm.variablesではなくpm.environmentを使用していることに注意してください。つまり、スコープは常に環境に設定されており、Postmanは選択した環境でのみ変数を見つけようとします。
#4)ローカル
ローカル変数とは何ですか?
ローカル変数は、特定のリクエスト実行のコンテキスト内でのみ使用できます。これは、JavaやC#などの最新のプログラミング言語の関数レベル変数に類似しています。これらは、変数が関数実行のコンテキスト内でアクセスできる関数変数とまったく同じです。
ローカル変数の重要なユースケースの1つは、グローバル、コレクション、環境などの他のスコープで定義されている変数の値をオーバーライドする場合に使用できることです。
つまり、「testVar」という名前のグローバル変数があり、グローバル変数に影響を与えずに値をオーバーライドしたい場合は、同じ名前のローカル変数を作成して、好きな値で使用できます。
ローカル変数をいつ使用するか?
ローカル変数は、このチュートリアルの前のセクションで説明したコレクション変数、グローバル変数、および環境変数と同じ方法で使用できます。
ここで重要なのは、ローカル変数をプログラムで使用するには、次を使用する必要があるということです。 pm.variables.get / pm.variables.set とは異なり 環境変数とグローバル変数に使用されたpm.environmentまたはpm.global。
pm.variables.get('testVar') pm.variables.set('testEnvVar',10)
#5)データ
データ変数とは何ですか?
データ変数は、コレクションランナーを介したリクエスト実行のコンテキストで提供されます。
Postmanを使用すると、コレクションランナーを介してコレクション内のリクエストを実行できます。実行中に、コレクション内のリクエストの実行中に使用されるJSONまたはCSVの形式でデータセットを提供できます。
ここで重要なのは、データ変数のソースはJSONまたはCSV形式のユーザー提供のデータファイルであり、リクエストの実行中は、データ変数はフェッチのみが可能であり、更新/変更または追加はできません。
データ変数をいつ使用するか?
データ変数は、複数のデータセットを操作しているときに使用され、データファイルからの反復の実行中にのみ存在します。
データ変数の使い方は?
コレクションランナーを介してリクエストを実行し、リクエストの実行中に値が置き換えられるデータファイルを提供するエンドツーエンドのシナリオを見てみましょう。
Wi-Fiデフォルトゲートウェイは利用できません
データ変数の概念を説明するために、新しいコレクションに簡単なGETリクエストを追加しましょう。同じGETエンドポイントhttps://reqres.in/api/users/{userId}を使用します
userIdの値を含むCSVファイルによってバックアップされるData変数を介して{userId}をフェッチします。
フローを理解するには、以下の手順に従ってください。
#1) PostmanリクエストビルダーのリクエストURLをhttps://reqres.in/api/users/{{testDataVar}}に変更します。
#二) ここに、 {{testDataVar}} は、コレクションランナーで使用されるデータソースから値がフェッチされるデータ変数です。
#3) 列名を「testDataVar」としてCSV形式で新しいデータファイルを作成します。
CSVファイルのデータを次のように設定します。
testDataVar 1 2 3 4 5
#4) ファイルをローカルファイルシステムに保存し、コレクションランナーを介してコレクションを実行するときにこのファイルを使用します。
#5) 次に、コレクションを選択し、(実行)をクリックして、コレクションランナーを介してコレクション要求を実行します。
#6) コレクションランナー構成で作成されたcsvデータファイルを選択し、ファイルタイプをtext / csvとして選択します。
# 7) 次に、「Run Postman collection」をクリックして、「RunResults」ウィンドウを参照します。実行された反復ごとに構成されたリクエストの実行の詳細があります。反復回数は、CSVファイルで構成されたデータ入力の数によって異なります。
データ変数の値がリクエストURLに正しく渡されたかどうかを検証するために、コレクションランナーの結果でリクエストURLなどの詳細を確認できます。一般に、データ変数は、データファイルで構成された値に従って、複数のデータセットに対して収集要求を実行する場合に使用されます。
Postman変数へのアクセス
Postman変数には、以下に示す2つの方法でアクセスできます。
- リクエストでは、ビルダー変数は二重中括弧形式を使用してアクセスできます。変数を解決している間、リクエストが実行される前に、最も近いスコープ変数値が置き換えられることに注意してください。
- スクリプトでは、事前リクエストスクリプト、テスト、アサーションなどのように、以下の構文を使用して変数にアクセス/変更できます。
変数をフェッチするには:
pm.variables.get( ‘variable-name’ )
変数値を設定します。
pm.variables.set( ‘variable-name’ , ’variable-value’ )
ここで重要なのは、変数が設定されると、最も近いスコープ変数を見つけて、その変数を設定または変更しようとすることです。セット中に変数が見つからない場合、Postmanスクリプトは単に新しいローカル変数を作成します。
メモとヒント
#1) 混乱を避けるために、異なるスコープに異なる変数名を付けることをお勧めします。Postmanサンドボックスは、リクエストビルダーで二重中括弧形式で変数を解決しようとするとき、またはpm.variables.get /のときに、最も近いスコープの変数を選択します。 pm.variables.setスクリプトが解決されました。
#二) 環境変数の場合、選択した環境のみが有効です。つまり、変数を解決している間、Postmanは選択した環境のみを調べます。
#3) 一般的な経験則に注意してください–スコープが最も近い変数が他の変数よりも優先されます。 例えば、 「input1」という名前のグローバル変数があり、同じ名前のローカル変数があり、その変数がローカル変数のスコープで参照されている場合、ローカルスコープ内の変数は、グローバル変数と比較して優先されます。
結論
このチュートリアルでは、Postmanの変数に関連する多くの概念と、それらを使用するさまざまな方法に触れました。グローバル、コレクション、環境、ローカル、データなどの変数の種類と、それぞれをいつ使用するかについて説明しました。
一言で言えば、Postman変数は、効果的な方法でリクエストとテストを実行するためにツールを使用および構成する方法に多くの力を追加します。郵便配達員の公式文書からの参照はほとんど得られませんでした ここに。
=> ポストマントレーニングチュートリアルのA〜Zをここで確認するには、ここにアクセスしてください。