HttpRunner 4.x でのレスポンス抽出と検証の実装方法

HttpRunner 4.x では、API レスポンスから値を抽出し、期待される結果と比較する機能が提供されています。抽出には主に2種類の方法が利用可能です。

抽出(Extract)の方式

  • JMESPath 式:JSON 形式のレスポンスボディに対して使用します。構造化されたデータから特定フィールドを取得できます。
    詳細は JMESPath 公式チュートリアル を参照。
  • 正規表現(Regex):HTML やプレーンテキストなど、非 JSON レスポンスから文字列を抽出する場合に使用します。正規表現の知識が必要です。

抽出可能なレスポンス要素

以下の5つのコンポーネントから値を抽出できます:

  1. headers:例:headers."Content-Type"
  2. cookies:例:cookies.session_id
  3. body:例:body.user.id
  4. status_code:例:200, 404
  5. proto:例:"HTTP/1.1"

キーに特殊文字(例:ハイフン)が含まれる場合は、ダブルクォートで囲む必要があります。

抽出の実装例(JSON レスポンス)

config:
  name: ログインテスト

teststeps:
- name: ユーザーログイン
  request:
    method: POST
    url: http://120.25.121.168:19001/api/login
    json:
      username: admin
      password: "quxue2023"
  extract:
    response_url: body.url
    client_origin: body.origin
    content_type: headers."Content-Type"
  validate:
    - eq: [status_code, 200]

実行後、抽出された変数はログに出力されます:

exportVars={"content_type":"application/json","client_origin":null,"response_url":null}

正規表現による抽出(非 JSON レスポンス)

HTML ページなどのテキストベースレスポンスから情報を抽出する例:

teststeps:
- name: ブログタイトル取得
  request:
    method: GET
    url: https://www.cnblogs.com/quxue
  extract:
    page_title: "<title>(.*)</title>"
  validate:
    - eq: [status_code, 200]

検証(Validate)の記述方法

抽出した値や直接指定したパスに対して、期待値との比較を行います。比較演算子として eq(等価)がよく使われます。

validate:
  - eq: [status_code, 200]
  - eq: [body.data.username, "admin"]
  - eq: [body.data.message, "成功"]
  - eq: [headers."Content-Type", "application/json"]

検証対象は、JMESPath で指定した JSON パス、または正規表現で抽出された変数(${page_title} のように参照可能)です。

タグ: HttpRunner JMESPath APIテスト 正規表現 レスポンス検証

7月1日 16:20 投稿