0

生年月日と年齢の両方を送信する 1 つの POST リクエストがあります。

以前のリクエストから生年月日を見つけ、それを正規表現エクストラクタで抽出し、POST リクエストで変数を渡しました。

しかし、前回のリクエストから Age が見つかりませんでした。Firebug でも Age 要素を見つけようとしました。しかし、このフィールドは生年月日フィールドによって自動計算され、フィールドは読み取り専用であるため、見つかりません。

Age フィールドの値を取得するにはどうすればよいですか?

考えられる解決策は、Jmeter の組み込み関数を使用するか、任意のスクリプト言語でプログラムを作成することです。しかし、Jmeterでそれを行う方法がわかりません。

前もって感謝します。

4

2 に答える 2

0

変数、つまり「1970-05-15」の値を持つ「生年月日」がある場合、次のようにBeanshell PreProcessorを使用して人の年齢を把握できます。

  1. 生年月日と年齢を渡す必要があるサンプラーの子として、Beanshell PreProcessor を追加します。
  2. 次のコードをプリプロセッサの「スクリプト」領域に入れます

    import java.text.SimpleDateFormat;        
    
    String birthDate = vars.get("birthDate");
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
    Date dateOfBirth = sdf.parse(birthDate);
    
    Calendar dob = Calendar.getInstance();
    dob.setTime(dateOfBirth);
    Calendar today = Calendar.getInstance();
    int age = today.get(Calendar.YEAR) - dob.get(Calendar.YEAR);
    if (today.get(Calendar.MONTH) < dob.get(Calendar.MONTH)) {
        age--;
    } else if (today.get(Calendar.MONTH) == dob.get(Calendar.MONTH)
            && today.get(Calendar.DAY_OF_MONTH) < dob.get(Calendar.DAY_OF_MONTH)) {
        age--;
    }
    
    vars.put("age",String.valueOf(age));
    
  3. 計算された年齢を次のように参照できます${age}

「yyyy-mm-dd」パターンの説明と、アプリケーションの日付と時刻の形式に一致するものを定義する方法については、SimpleDateFormat JavaDocを参照してください。また、 BeanShell の使用方法: JMeter のお気に入りの組み込みコンポーネントガイドを参照して、JMeter でのスクリプト作成について学習してください。

于 2015-06-10T08:04:23.453 に答える