2017-11-16 17 views
0

Jmeter BeanShell Scripting/Javaを初めて使用し、現在以下のスクリプトを使用して問題に直面しています。Jmeter Beanシェル - Regex配列の正しい値とグループID番号/インスタンスをユーザー定義変数に一致させる

正規表現エクストラクタの使用可能なすべての値の配列を取得できます。たとえば、次の10の日付値、および変数が${RegExValue_All}(テンプレート:$1$;マッチ:-1)のように定義されて

サンプル値:

01/01/2017 
01/01/2017 
01/01/2017 
04/01/2017 
05/01/2017 
07/01/2017 
07/01/2017 
08/01/2017 
10/01/2017 
10/01/2017 

は今、私は特定の日付を一致させるのBeanShellスクリプトを記述しようとしていますその序数/インデックス/反復番号を取り出し、それが現在空白のユーザ定義変数${Matched_Iteration_Value}に保存します。 私は以下のコードを使用していますが、私はループカウントを10として設定しているが、序数/インデックス/反復数を保存することができず、さまざまなエラーが発生するため、正しい値を比較できます。

また、最初の一致が取得され、その繰り返し番号が後続のリクエストで使用する必要がある変数に保存されるとすぐに実行を停止するようにします。あなたのスクリプトと説明

import java.text.DateFormat; 
import java.text.SimpleDateFormat; 
import java.text.ParseException; 
import java.util.Date; 
matches = (vars.get("RegExValue _All")); 
for (int i=1; i<=20; i++) { 
    if (vars.get("cPIGValueDate_All_" + i).equals("07/01/2017")) { 
     log.info("Variable: cPIGValueDate_All_" + i + " is the Correct PIG"); 
     vars.putobject("Matched_Iteration_Value ",i); 
    } 
} 

答えて

0

は少し矛盾しているので、私はいくつかのことを前提とする必要があります。

  • 正規表現抽出が参考名で構成されていること:RegExValue。だから、マッチと:-1、それは以上の1日を見つけたとき、それはあなたがそれを取得していることから、およそRegExValue _Allを気にしないが、どこでもそれを使用しない名前RegExValue_1RegExValue_2
  • を持つ変数として保存し、それはあなたがあなたの日付が形式でそうdd/MM/yyyy

されていることを、様々な日付関連クラス
  • を輸入しているので、あなたは日付などの日付を(とない文字列など)を比較したいあなたの質問
  • の一部ではありません
    1. まず、ループ自体はRegExValue_matchNrという変数に基づいている必要があります。は、正規表現に複数の一致があるときにJMeterによって自動的に作成されます。これは、ハードコーディングのループよりも優れています。
    2. SimpleDateFormatを使用して、文字列から予想される日付と実際の日付を両方ともDateに変換できます。
    3. は、その後、あなたが日付
    4. として、それらを比較し、日付が同じ

    であれば最終的には、変数を保存し、ループを終了ここでは、コードです:

    import java.lang.Integer; 
    import java.text.DateFormat; 
    import java.text.SimpleDateFormat; 
    import java.util.Date; 
    
    // 1. 
    int count = 0; 
    try { 
        count = Integer.parseInt(vars.get("RegExValue_matchNr")); 
    } 
    catch(Exception e) { } 
    
    // 2. 
    DateFormat format = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH); 
    Date expectedDate = format.parse("07/01/2017"); 
    
    for(int i = 1; i <= count; i++) 
    { 
        Date actualDate = null; 
        try { 
         actualDate = format.parse(vars.get("RegExValue_" + i)); 
        } 
        catch(Exception e) { } 
    
        // 3. 
        if(actualDate != null && expectedDate.compareTo(actualDate) == 0) { 
         log.info("Variable: RegExValue_" + i + " is the Correct PIG"); 
         // 4. 
         vars.put("Matched_Iteration_Value", "" + i); 
         return; 
        } 
    } 
    
  • 関連する問題