ここでは以下のような、テスト実行ごとに異なる値を使用する方法について解説します。
- 毎回違うユーザーIDをテストで使いたい
- 毎回違うクーポンコードをテストで使いたい
- 毎回違うクレジットカード番号をテストで使いたい
目次
「現在時刻を元に生成したユニークな値を保存」コマンドが使用できる場合
現在時刻を元に生成したユニークな値を保存コマンドを利用すると、テスト実行ごとにユニークな値を自動生成できます。
このコマンドで生成されるのは14桁の数字です。必要に応じて、正規表現に一致した部分を保存コマンドを併用することで桁数を短くすることも可能です。
「現在時刻を元に生成したユニークな値を保存」コマンドが使用できない場合
以下のように、特定の書式や条件を満たす値を必要とするケースでは、ユニーク値生成コマンドは利用できません。
- 有効なクーポンコードの候補からランダムに1つ選びたい場合
- クレジットカード欄に16桁の数字を入力したい場合
- 英字と数字を組み合わせた値を入力したい場合
このような場合は、以下の方法をご検討ください。
1. 「TypeScriptコードを実行」コマンドを用いる
ここでは、「TypeScriptコードを実行」コマンドを用いて、1日につき数値が1増加する値を生成する方法をご紹介します。
定期実行などで1日1回実行するようなテストケースでは、こちらの方法が有効です。
実装手順
- 「固定値を保存」コマンドを用いて、起算日を変数に保存します。(例: 2026-01-01)
- 「日時計算」コマンドを用いて、本日の日付を変数に保存します。(書式: yyyy-MM-dd)
-
「TypeScriptコードを実行」を用いて、2つの日付の差分を計算し、8桁ゼロ埋めした値を変数に保存します。
なお、複数テストケースで使用したい場合は、重複を避けるために先頭1-2桁をテストケース識別子として利用し、残りをゼロ埋めして設定することで、複数テストケース実行時の値重複を回避することも可能です。
2. Web APIを用いる
値を自動生成して返すWeb APIを作成し、MagicPodのWeb APIコールコマンドで呼び出す方法です。
テスト実行ごとに異なる値を取得できます。
以下では、PostmanのMockサーバーを利用して「8桁のランダムな英数字」を返すAPIを例として、MagicPodでその値を取得する方法について説明します。
[Postmanでの手順]
-
コレクションを新規作成
左のサイドバーより「コレクション」を選択し、「+ ボタン」もしくは「コレクションを作成」をクリックして新規コレクションを作成します。
-
GETメソッドのリクエストを追加し、サンプルを設定
サイドバーにあるコレクション名をマウスオーバーした際に表示される「+ ボタン」より、コレクション内に新しいリクエストを追加します。このとき、HTTPメソッドは
GETを選択します。リクエストURL欄は後ほど記載するため空けておきます。次に、サイドバーのリクエスト名横にある「3点リーダ」をクリックし、「サンプルを追加」を選択します。サンプルには、以下の3点を設定します。
・ステータスコード:
200 OK・ヘッダー:
キー:Content-Type 値:application/json・レスポンスボディ:
{ "randomString": "{{$randomAlphaNumeric}}{{$randomAlphaNumeric}}{{$randomAlphaNumeric}}{{$randomAlphaNumeric}}{{$randomAlphaNumeric}}{{$randomAlphaNumeric}}{{$randomAlphaNumeric}}{{$randomAlphaNumeric}}" } -
モックサーバーを作成し、コレクションに紐づける
サイドバーより「モックサーバー」を選択します。(サイドバーにモックサーバーが存在しない場合、サイドバー最下部のアイコンをクリックし、モックサーバーのサイドバー表示を有効化してください。)
「+ ボタン」もしくは「モックサーバーを作成」をクリックして新規モックサーバーを作成します。「既存のコレクション」を選択、「任意のモックサーバー名」を入力、「先程作成したコレクション」を選択し、「モックサーバーを作成」をクリックしてください。
-
発行されたモックサーバーのURLをリクエストに設定
作成したモックサーバーのURLをコピーし、リクエストおよびサンプルのリクエストURL欄に貼り付けます。
うまく作成できていれば、リクエストの「送信」ボタン(またはサンプルの「試す」ボタン)を押すと、生成された「8桁のランダムな英数字」が下部に表示されます。
[MagicPodでの手順]
MagicPodのテストケースに、Web APIコールコマンドを追加し、以下のように設定します。
・メソッド:GET
・URL:(作成したモックサーバーのURL)
・ヘッダー:
キー:Content-Type
値:application/json ・結果 :
変数:randomString
Javascript:jsonResponse.randomString 上記コマンドで取得した「8桁のランダムな英数字」は、変数 ${randomString} に保存され、以降のテストステップで使用できます。
実際のプロジェクトでは、利用目的に応じて適切なWeb APIをご用意ください。
3. コマンドライン経由で値を渡す
コマンドライン経由でテスト一括実行を行う場合、実行時に指定した共有変数を外部から渡すことが可能です。 この方法を利用し、外部で生成した値を共有変数として渡すことで、実行のたびに異なる値を指定することができます。
共有変数を外部から渡す方法の詳細はこちらに記載しております。
4. 「データパターン」と「条件分岐コマンド」を組み合わせる
例えば、1日1回の定期実行で毎回異なる値を使いたい場合、MagicPodのデータパターン機能と、条件分岐コマンドを組み合わせることで、あらかじめ設定した日にちに対応する値をテストで使用できます。
実装手順
まず、日にちと、それに対応する値をデータパターンに設定します。
次に、テストケースを以下のように編集します。
- 日時計算コマンドで現在の"日"を変数に保存します。
-
変数の値が一致する場合コマンドで、1.で保存した変数がデータパターンの変数
${日にち}と一致する場合、後続の処理が実行されるようにします。
上記方法により、現在の日にちに対応するあらかじめ設定した値を、その日のテストで使用することができます。 この方法では全データパターンが実行されますが、条件分岐で該当日以外の処理はスキップされるため、実行時間への影響は小さくなります。
ただし、値を毎月更新する必要があるため、更新の手間を避けたい場合は前述のWeb APIを用いた方法をお勧めします。