メインコンテンツまでスキップ
バージョン:23.4

APIテストの実行

Eggplant FunctionalのAPIテストエディタでAPIテストを実行および編集できます。また、SenseTalkスクリプト、スケジュール、コマンドラインからAPIテストを呼び出すこともできます。

SenseTalkスクリプトからAPIテストを実行する

SenseTalkスクリプトからAPIテストを呼び出すのは、SenseTalkスクリプトから別のSenseTalkスクリプトを呼び出すのと同じように機能します。

このスクリプトは、ApiTest1という名前のAPIテストを呼び出し、そのURL、レスポンスヘッダー、およびレスポンスボディを返します。

put ApiTest1() into foo
put foo.url
put foo.responseHeaders
put foo.responseBody

API関数

api() 関数を使用して、リクエストとレスポンスの両方を含む API テストのすべてのプロパティにアクセスします。この関数は常に、最後に実行された API テストからのプロパティを返すため、後で使用する場合は、個々のテストからのプロパティを変数として保存することをお勧めします。この例では、ApiTest1 という API テストを実行し、api 関数を使用して応答時間を TimeVar という変数に保存します。

ApiTest1
put api().responseTime into TimeVar

api() 関数は、最新の API テストから次の値を含むプロパティ リストを返します。

  • authenticationType: リクエストに使用された認証タイプを返します。
  • httpMethod: リクエストタイプ(GET、POSTなど)を返します。
  • mimeType: レスポンスで使用されるMIMEタイプを返します。
  • oauth1Token: OAuth 1.0が認証方法の場合、トークンを返します。それ以外の場合は空です。
  • password: 認証にパスワードが使用されている場合、検閲された文字列を返します。それ以外の場合は空です。
  • requestBody: POST、PUT、PATCHリクエストのリクエスト本文を返します。それ以外の場合は空です。
  • requestBodyFormat: リクエストBodyセクションで選択されたBody Formatタイプを返します。本文内容がないリクエストの場合、返される値は最後に選択されたBody Formatタイプです。
  • requestHeaders: リクエストHeadersセクションで入力されたヘッダーをキー/値のペアとして返します。それ以外の場合は空です。
  • responseBody: サーバーからのレスポンスデータを返します。
  • responseCookies: 必要に応じて、レスポンス内のCookieに関する詳細を返します。
  • responseHeaders: レスポンスヘッダーをキー/値のペアとして返します。
  • responseTime: サーバーからのリクエストのレスポンス時間を秒単位で返します。
  • statusCode: サーバーから受信したステータスコードを返します(例:200、404)。
  • url: リクエストURLを返します。
  • userName: 認証に使用されるユーザー名を返します(使用されている場合)。それ以外の場合は空です。

API テストのプロパティをオーバーライドする

SenseTalk を使用して、API テストのプロパティをオーバーライドできます。これらのプロパティのリストを表示するには、まず API テストを実行します。次に、put api().keys.archive を実行します。この関数は、参照された API テストに入力された値ではなく、設定できるプロパティ (キー) のリストを返します。

これらのプロパティをオーバーライドするには、関数呼び出しで辞書としてプロパティを指定します。この例では、myApiTest という API テストで使用される URL とユーザー名を上書きします。

myApiTest(url: "http://www.google.com", username: "documentation")

チェーン API テスト

スクリプト エディタの SenseTalk スクリプトで API テストを連鎖させることができます。これにより、これらの API テストの結果を、SenseTalk を使用した大規模なテストで使用できるようになります。次の例では、エラー追跡システムの大規模なテストの一部として、2 つの API テスト、Get_BasicAuth_jsonHead_BasicAuth_json の結果を使用します。

log "````````````````````````-----"
log " Feature #XXXX"
log " Support for Basic Authentication"
log "````````````````````````------"

BeginTestCase "Basic Authentication - Valid Authentication - Get Request"
Get_BasicAuth_json
EndTestCase "Basic Authentication - Valid Authentication - Get Request"
BeginTestCase "Basic Authentication - Valid Authentication - Head Request"
Head_BasicAuth_json
EndTestCase "Basic Authentication - Valid Authentication - Head Request"
BeginTestCase "Basic Authentication - Invalid Authentication"
set the suiteVariables.username to "xxxxx"
Get_BasicAuth_json
EndTestCase "Basic Authentication - Invalid Authentication"

コマンドラインからAPIテストを実行する

コマンドラインから API テストを実行するには、runscript コマンドを使用します。スクリプト ログを出力するには、-CommandLineOutput フラグを使用します。

Mac (bash shell)

/Applications/Eggplant.app/Contents/MacOS/runscript /Users/Bob/Documents/APITesting.suite/APITests/ApiTest2.apitest -CommandLineOutput はい

Windows (command shell)

"C:\Program Files\Eggplant\runscript.bat" "C:\Users\Bob\Documents\APITesting.suite\APITests\ApiTest1.apitest" -CommandLineOutput yes

Linux (bash shell)

runscript ~/Documents/APITesting.suite/APITests/Untitled.apitest -CommandLineOutput yes

You can override any parameters you've set in the API test from the command line, as well.

Mac (bash shell)

/Applications/Eggplant.app/Contents/MacOS/runscript /Users/Bob/Documents/APITesting.suite/APITests/ApiTest2.apitest -pv '(url:"http://chicago.publicserver.com/issues/14618.xml")' -CommandLineOutput Yes

Windows (command shell)

"C:\Program Files\Eggplant\runscript.bat" "C:\Users\Bob\Documents\AutoDoctorScreenshots.suite\APITests\JsonGet.apitest" -pv (url:\"http://chicago.publicserver.com/issues/14920.xml\") -CommandLineOutput Yes

Linux (bash shell)

runscript ~/Documents/APITesting.suite/APITests/Untitled.apitest -pv '(url:"http://chicago.publicserver.com/issues/14920.xml")' -CommandLineOutput yes

スケジュールからAPIテストを実行する

スケジュールを使用して、実行する API テストとスクリプトのコレクション、それらを実行する順序、パラメーターまたは依存関係を定義します。 スケジュール ペインからスケジュールにアクセスします。

Status 列の右側にある矢印をクリックすると、選択したテストまたはスクリプト実行の詳細な結果が表示されます。 API テストのスケジュールを実行するために、テスト対象システム (SUT) に接続する必要はないことに注意してください。

APIテストのパスワード保存と暗号化

Status 列の正当にある矢印をクリックすると、選択したテストまたはスクリプト実行されるの詳細な結果が表示されます。 API テストのスケジュールを実行するために、テスト対象システム (SUT) に接続する必要はないことに注意してください。

パスワードをプレーン テキストとして保存することは推奨されないため、スイート変数として保存することを選択したパスワードはすべてエンコードする必要があります。これらのパスワードは、API テストに渡す前にデコードする必要があります。 Eggplant Functionalで直接サポートされていない認証形式を使用している場合にのみ、このメソッドを使用する必要があることに注意してください。

Eggplant Functionalを使用すると、パスワードのエンコードとデコードの両方ができます。

ステップバイステップ: パスワードを暗号化する

  1. Runウィンドウを開きます。 Ad Hoc Do Box に次のコードを入力し、Do をクリックします。

    log encodeText("my password")
  2. エンコードされたパスワードをログ ペインからコピーします。

  3. Settings タブを開き、エンコードされたパスワードを Suite Variables sectionの Key fieldに貼り付けます。対応する Key fieldにパスワード変数の名前を入力します。

  4. スイート変数を使用して API テストのパスワード プロパティをオーバーライドするには、API スクリプトまたは SenseTalk スクリプトで decodeText 関数を使用します。

    put decodetext(MyPwd) into myPassword
    ApiTest1(password: myPassword)