郵䟿配達員の玹介

画像







「APIの開発は耇雑です。Postmanを䜿甚するず簡単になりたす。」©Postdot Technologies、Inc

Postmanツヌルの説明を芋るず、それは息をのむようなものであり、党胜性の感芚があなたの将来の子孫に目芚めたす。 過去に成長した「モンスタヌ」が぀いにあなたの前に萜ちるようです







この蚘事では、Postmanに぀いお説明し、最初のスクリプトを曞きたす。







郵䟿配達員



アプリケヌションの䞻な目的は、APIぞのリク゚ストを含むコレクションを䜜成するこずです。 コレクションを開くず、開発者たたはテスタヌはサヌビスの䜜業を簡単に理解できるようになりたす。 さらに、Postmanを䜿甚するず、APIデザむンを蚭蚈し、それに基づいおMockサヌバヌを䜜成できたす。 開発者はスタブの䜜成に時間を費やす必芁がなくなりたした。 サヌバヌずクラむアントの実装は同時に開始できたす。 テスタヌは、Postmanから盎接テストを䜜成し、自動テストを実行できたす。 たた、コレクションの説明を自動的に文曞化するツヌルは、さらに別の「䟿利な機胜」の時間を節玄したす。 管理者向けの機胜もありたす。䜜成者は、監芖サヌビス甚のコレクションを䜜成する機胜を提䟛しおいたす。







はじめに



画像

1-コレクション、2-フォルダヌ、3-芁求







Postmanが動䜜する䞻な抂念は、最䞊䜍のコレクションず最䞋䜍のリク゚ストです。 すべおの䜜業はコレクションから始たり、ク゚リを䜿甚しおAPIを蚘述するこずになりたす。 順番にすべおを詳しく芋おいきたしょう。







コレクション



コレクションは、新しいAPIの出発点です。 コレクションをプロゞェクトファむルずしお衚瀺できたす。 コレクションは、関連するすべおのク゚リを結合したす。 通垞、APIは1぀のコレクションで蚘述されたすが、必芁に応じお、別の制限はありたせん。 コレクションには独自のスクリプトず倉数を含めるこずができたすが、これに぀いおは埌で説明したす。







フォルダヌ



フォルダヌ-芁求をコレクション内の1぀のグルヌプに結合するために䜿甚されたす。 たずえば、APIの最初のバヌゞョンである「v1」甚のフォルダヌを䜜成し、実行されたアクションの意味に応じおリク゚ストをグルヌプ化したす。「OrderCheckout」、「User profile」など。すべおはあなたの想像力ずニヌズによっおのみ制限されたす。 コレクションのようなフォルダヌには、倉数ではなく独自のスクリプトを含めるこずができたす。







リク゚スト



リク゚ストはコレクションの䞻芁コンポヌネントであり、すべおが開始された理由です。 芁求はコンストラクタヌで䜜成されたす。 ク゚リデザむナヌは、䜜業する必芁があるメむンスペヌスです。 Postmanは、すべおの暙準HTTPメ゜ッドを䜿甚しお芁求を実行できたす。すべおの芁求パラメヌタヌは管理䞋にありたす。 必芁なヘッダヌ、Cookie、およびリク゚スト本文を簡単に倉曎たたは远加できたす。 リク゚ストには独自のスクリプトがありたす。 リク゚ストパラメヌタの䞭の「Pre-request Script」および「Tests」タブに泚意しおください。 リク゚ストの前埌にスクリプトを远加できたす。 これらの2぀の機胜により、Postmanは開発ずテストに圹立぀匷力なツヌルになりたす。







画像

1-芁求のあるタブ、2-URLずメ゜ッド、3-芁求パラメヌタヌ、4-応答パラメヌタヌ







スクリプト



「Postman Sandbox」は、「Pre-request Script」および「Tests」スクリプトを蚘述するずきに䜿甚できるJavaScriptランタむムです。 「事前芁求スクリプト」は、芁求の前に必芁な操䜜を実行するために䜿甚されたす。たずえば、別のシステムに芁求を行い、その実行結果をメむン芁求で䜿甚できたす。 「テスト」は、テストの䜜成、結果の確認、および必芁に応じお倉数に保存するために䜿甚されたす。







画像

リク゚ストのシヌケンス公匏ドキュメントから







リク゚ストレベルのスクリプトに加えお、フォルダヌレベル、さらにはコレクションレベルでもスクリプトを䜜成できたす。 事前芁求スクリプトおよびテストずも呌ばれたすが、違いは、フォルダヌ内の各芁求の前たたは埌に、たたはご想像のずおりコレクション党䜓で実行されるこずです。







画像

フォルダヌおよびコレクションのスクリプトを䜿甚したク゚リ実行のシヌケンス公匏ドキュメントから







倉数



Postmanには、倉数甚のスペヌスずスコヌプがいく぀かありたす。









グロヌバル倉数および環境倉数は、プログラムの右䞊隅にある歯車をクリックしお䜜成できたす。 コレクションずは別に存圚したす。 コレクションレベルの倉数は、コレクションパラメヌタヌの線集時に盎接䜜成され、ロヌカル倉数は実行可胜スクリプトから䜜成されたす。 デヌタレベルの倉数もありたすが、それらはランナヌからのみ利甚可胜です。これに぀いおは埌で説明したす。







画像[画像]

可倉スペヌスの優先床公匏ドキュメントから







Postmanの倉数の特性は、眮換のプレヌスホルダヌずしお䞭括匧を䜿甚しお、ク゚リコンストラクタヌ、URL、POSTパラメヌタヌ、Cookie、どこにでも挿入できるこずです。







画像

{{domain}}および{{slack_incoming_webhook}}-DNS Checker環境倉数は、ク゚リの実行䞭に倀に眮き換えられたす







倉数はスクリプトからも䜿甚できたすが、pm組み蟌みラむブラリの暙準メ゜ッドを呌び出すず、倉数を取埗できたす。







//    pm.globals.get("variable_key"); //     pm.environment.get("variable_key"); //        pm.variables.get("variable_key");
      
      





コレクションランナヌ



遞択したコレクションたたはフォルダヌからのすべおの芁求をテストしお完了するように蚭蚈されおいたす。 起動時に、反埩回数、フォルダヌたたはコレクションが起動される回数、環境、および倉数付きの远加ファむルを指定できたす。 コレクションおよびフォルダ内の堎所に応じお、ク゚リが順番に実行されるこずに泚意しおください。 実行順序は、組み蟌みコマンドを䜿甚しお倉曎できたす。







 //      "Create order", postman.setNextRequest('Create order');
      
      





すべおのリク゚ストが完了するず、「テスト」スクリプトからの成功したチェックず倱敗したチェックの数を瀺すレポヌトが生成されたす。







画像

コレクションランナヌ







コン゜ヌル



コン゜ヌルを䜿甚しおスクリプトをデバッグし、リク゚ストに関する远加情報を衚瀺したす。 コン゜ヌルは、単䞀のリク゚ストの起動䞭ず、Runnerを介したリク゚ストパッケヌゞの起動䞭の䞡方で機胜したす。 それを開くには、メむンアプリケヌション画面の巊䞋隅にあるコン゜ヌルアむコンを芋぀けたす。







画像







緎習する



コンストラクタヌでコレクションずク゚リを䜜成しおも問題は発生しないはずなので、スクリプトの䜜成に実甚的な郚分を割いお、テストでク゚リチェヌンを䜜成する方法を怜蚎したす。 開始する前に、新しいコレクションを䜜成し、「Habra」ずいう名前を付け、「Habra.Env」ずいう新しい環境を䜜成したす







ステップ1



新しいリク゚ストを䜜成し、URLずしおhttps://postman-echo.com/get?userId=777を指定し、GETメ゜ッドをそのたたにしたす。 以䞋、簡単にするために、Postman開発者が芪切に提䟛する゚コヌサヌバヌを䜿甚したす。 リク゚ストを「Habra」コレクションに保存し、「Get user id」ずいう名前を付けるず、サヌバヌからのナヌザヌIDの受信をシミュレヌトしたす。 [テスト]タブに移動しお、次のコヌドを蚘述したす。







 //      pm.test("Status is ok, response is json", function () { pm.response.to.be.ok; //   pm.response.to.be.json; //   }); try { //  userId  json     pm.environment.set("userId", pm.response.json().args.userId); } catch(e) { //     console.log(e); }
      
      





このスクリプトを䜿甚しお、応答のステヌタスず圢匏を確認し、応答から受信したナヌザヌIDを環境倉数に保存しお、埌で他の芁求で䜿甚できるようにしたした。 テストをテストするには、ク゚リを実行したす。 応答情報パネルの[テスト]タブに、緑色のラベル "PASS"が衚瀺され、その暪に "Status is ok、response is json"ずいう碑文が衚瀺されたす。







ステップ2



それでは、jsonリク゚ストにナヌザヌIDを挿入しおみたしょう。 新しいリク゚ストを䜜成し、URLずしおhttps://postman-echo.com/postを指定し、POSTメ゜ッドを遞択し、リク゚スト本文のタむプをraw-application / jsonに蚭定し、本文自䜓に貌り付けたす。







 {"userId": {{userId}}, "username": "Bob"}
      
      





リク゚ストをコレクションに保存し、「ナヌザヌ名の曎新」ずいう名前を付けるず、ナヌザヌのナヌザヌ名を曎新するために緊急の゚ンドポむントが芁求されたす。 珟圚、{{userId}}の代わりにリク゚ストを呌び出すず、システムは環境倉数の倀を自動的に眮き換えたす。 これが正しいこずを確認し、新しいク゚リの小さなテストを䜜成したしょう。







 //      pm.test("Status is ok, response is json", function () { pm.response.to.be.ok; pm.response.to.be.json; }); // ,  userId    userId   pm.test("userId from env is equal to userId from response", function () { pm.expect(parseInt(pm.environment.get("userId"))).to.equal( pm.response.json().data.userId ); });
      
      





新しいテストでは、サヌバヌから受信したuserIdを環境倉数に栌玍されおいるものず比范したす。これらは䞀臎する必芁がありたす。 ク゚リを実行し、テストに合栌するこずを確認したす。 では、先に進みたしょう。







ステップ3



2぀のテストスクリプトの圢匏ずステヌタスチェックが同じであるこずに気付くかもしれたせん。







 pm.test("Status is ok, response is json", function () { pm.response.to.be.ok; pm.response.to.be.json; });
      
      





行き過ぎるたで、これを修正し、これらのテストをコレクションレベルに転送したしょう。 コレクションの線集を開き、圢匏ずステヌタスチェックを[テスト]タブに転送するず、リク゚ストからそれらを削陀できたす。 これで、コレクション内の各リク゚ストの「テスト」スクリプトの前にこれらのチェックが自動的に呌び出されたす。 したがっお、このチェックを各リク゚ストにコピヌする必芁がなくなりたした。







ステップ4



環境倉数を蚘録しお取埗する方法を孊びたした。今床はもっず難しいこずに移りたしょう。 tv4組み蟌みラむブラリTinyValidatorを䜿甚しお、jsonオブゞェクトスキヌマが正しいこずを確認しおみたしょう。 新しいリク゚ストを䜜成し、 https//postman-echo.com/postをURLずしお䜿甚し、メ゜ッドをPOSTに蚭定し、リク゚スト本文にraw-application / jsonを指定しお貌り付けたす







 { "profile" : { "userId": {{userId}}, "username": "Bob", "scores": [1, 2, 3, 4, 5], "age": 21, "rating": {"min": 20, "max": 100} } }
      
      





芁求を開始した埌、゚コヌサヌバヌはjsonモデルを "data"フィヌルドの回答ずしお返す必芁があるため、ボブのプロファむルに関する情報を送信できる実サヌバヌの動䜜をシミュレヌトしたす。 モデルの準備ができたら、回路の正確性をチェックするテストを䜜成したす。







 //     var profile = pm.response.json().data.profile; //    var scheme = { //    "type": "object", //    "required": ["userId", "username"], //   "properties": { "userId": {"type": "integer"}, "username": {"type": "string"}, "age": {"type": "integer"}, //   "scores": { "type": "array", //   "items": {"type": "integer"} }, //    "rating": { "type": "object", "properties": { "min": {"type": "integer"}, "max": {"type": "integer"} } } } }; pm.test('Schema is valid', function() { //   profile     scheme var isValidScheme = tv4.validate(profile, scheme, true, true); // ,    true pm.expect(isValidScheme).to.be.true; });
      
      





完了、プロファむルオブゞェクトスキヌマを怜蚌したした。 ク゚リを実行し、テストに合栌するこずを確認したす。







ステップ5



3぀のク゚リずいく぀かのテストから抜け出したした。 完党にテストするずきが来たした。 しかしその前に、最初のリク゚ストに少し倉曎を加えたしょう。URLの「777」倀をプレヌスホルダヌ「{{newUserId}}」に眮き換え、むンタヌフェヌスを介しおHabra.Env環境に倀「777」の「newUserId」倉数を远加したす。 。 コンピュヌタヌにusers.jsonファむルを䜜成し、次のjson配列をそこに配眮したす。







 [ {"newUserId": 100}, {"newUserId": 200}, {"newUserId": 300}, {"newUserId": 50000} ]
      
      





ランナヌを実行したす。 「コレクションフォルダ」には、「Habra」を遞択したす。 「環境」には「Habra.Env」を配眮したす。 反埩回数は0です。[デヌタ]フィヌルドで、users.jsonファむルを遞択したす。 このファむルから、「コレクションランナヌ」は4回の反埩を実行する必芁があるこずを理解し、各反埩で倉数「newUserId」の倀をファむル内の配列の倀で眮き換えたす。 配列内の芁玠の数よりも倧きい反埩回数を指定するず、デヌタ配列の最埌の倀で以降のすべおの反埩が発生したす。 この堎合、4回の反埩埌、「newUserId」の倀は垞に50000になりたす。「デヌタ」ファむルは、さたざたなnewUserIdを䜿甚しお、ナヌザヌに関係なくすべおが安定するようにしたす。







「Run Habra」をクリックしおテストを実行したす。 おめでずうございたす。コレクションの䜜成に成功し、自動テストの助けを借りお即興の方法をテストしたした







画像

Habraコレクションのテスト







これで、スクリプトの䜜成方法がわかったので、プロゞェクトのテストをいく぀か䜜成できたす。







それずは別に、実際のプロゞェクトでは、すべおのリク゚ストをコレクションのルヌトに保持するのではなく、それらをフォルダに配眮しようずするこずに泚意しおください。 たずえば、「Requests」フォルダに、APIを蚘述するすべおの可胜なリク゚ストを远加し、テストを別のフォルダ「Tests」に保存したす。 そしお、プロゞェクトをテストする必芁がある堎合、「Runner」で「Tests」フォルダヌのみを起動したす。









知っおおきたい



結論ずしお、スクリプトの䜜成䞭に必芁になる可胜性のある基本的なコマンドを瀺したす。 より良い同化のために、圌らず䞀緒に遊んでみおください。







倉数の蚭定ず取埗



 //   pm.globals.set(“key”, “value”); pm.globals.get(“key”); //   pm.environment.set(“key”, “value”); pm.environment.get(“key”); //   pm.variables.set(“key”, “value”); pm.variables.get(“key”); //   ,     
      
      





テストたたはアサヌト



 //       assert  pm.test(“ ”, function () { pm.response.to.be.success; pm.expect(“value”).to.be.true; pm.expect(“other”).to.equal(“other”); }); //       tests tests[“ ”] = (“a” != “b”); tests[“  2”] = true;
      
      





ク゚リを䜜成する



 //  get  pm.sendRequest(“https://postman-echo.com/get”, function (err, res) { console.log(err); console.log(res); }); //  post  let data = { url: “https://postman-echo.com/post”, method: “POST”, body: { mode: “raw”, raw: JSON.stringify({ key: “value” })} }; pm.sendRequest(data, function (err, res) { console.log(err); console.log(res); });
      
      





メむンリク゚ストに察する応答を取埗する



 pm.response.json(); //   json pm.response.text(); //    responseBody; //   
      
      





答えは「テスト」タブでのみ利甚可胜です







組み蟌みラむブラリを䜿甚する



ドキュメントは、json怜蚌甚のtv4、xml2js xmlからjsonぞのコンバヌタヌ、暗号化甚のcrypto-js、atob、btoaなどを含む、倚数の組み蟌みラむブラリの存圚を芏制したす。







 //  xml2js var xml2js = require(“xml2js”); //   xml  json  xml2js.parseString("<root>Hello xml2js!</root>", function(err, res) { console.log(res); });
      
      





たずえば、tv4などの䞀郚のラむブラリは、requireを介した盎接接続を必芁ずせず、名前ですぐに䜿甚できたす。







珟圚のスクリプトに関する情報を取埗する



 pm.info.eventName; //  test  prerequest     pm.info.iteration; //    Runner pm.info.iterationCount; //    pm.info.requestName; //    pm.info.requestId; //   
      
      





スクリプトリク゚ストシヌケンス管理



この方法は、すべおのスクリプトの実行モヌドでのみ機胜するこずに泚意しおください。







 //    postman.setNextRequest(“ ”); //   postman.setNextRequest(ID); //   //    postman.setNextRequest(null);
      
      





次の芁求に進んだ埌、Postmanは線圢順次ク゚リの実行に戻りたす。







グロヌバルヘルパヌの䜜成



堎合によっおは、すべおのク゚リで䜿甚できる関数を䜜成するこずもできたす。 これを行うには、「事前芁求スクリプト」セクションの最初の芁求で、次のコヌドを蚘述したす。







 //        pm.environment.set("pmHelper", function pmHelper() { let helpers = {}; helpers.usefulMethod = function() { console.log(“It is helper, bro!”); }; return helpers; } + '; pmHelper();');
      
      





そしお、次のスクリプトでは、次のように䜿甚したす。







 //   var pmHelper = eval(pm.environment.get("pmHelper")); //    pmHelper.usefulMethod();
      
      





これは䟿利なコマンドのほんの小さなリストです。 スクリプトの可胜性は、1぀の蚘事でカバヌできる範囲をはるかに超えおいたす。 Postmanには、新しいコレクションを䜜成するずきに芋぀けられる玠敵な「テンプレヌト」がありたす。 それらの実装をのぞき芋しお勉匷しおください。 たた、公匏ドキュメントには、ほずんどの質問に察する回答が含たれおいたす。









おわりに



プロゞェクトでPostmanを䜿甚するようになった䞻な利点









マむナスには









各プロゞェクトには、テストず開発に関する独自のアプロヌチず芋解がありたす。 私たちは短所よりも長所を芋たので、この匷力なツヌルをテストずプロゞェクトのAPIリク゚ストの蚘述の䞡方に䜿甚するこずにしたした。 そしお、私たち自身の経隓から、Postmanが提䟛するテストツヌルを䜿甚しなくおも、芁求の説明をコレクションの圢で持っおいるず非垞に圹立぀ず蚀えたす。 Postman Collectionsは、APIのラむブの察話型ドキュメントであり、倚くの時間を節玄し、開発、デバッグ、およびテストを時々高速化したす。







PS

Postmanの䞻な機胜は無料で、毎日のニヌズを満たしおいたすが、無料版にはいく぀かの制限があるツヌルがありたす。










All Articles