3

「応答をファイルに保存」リスナーのファイル名の一部として、正規表現キャプチャを含む変数を使用するのに問題があります。キャプチャされた変数を if コントローラーで正常に使用できます。しかし、「応答をファイルに保存」リスナーのファイル接頭辞セクションで使用すると、満足できません。

これは、正規表現を実行している JSON です

"command":"ARCHIVE_FILE"

これは正規表現です

Reference Name:     command
Regular Expression: "command":"(.+?)"
Template:           $1$
Match No.           1
Default Value:      COMMAND_NOT_FOUND

キャプチャした変数を「If コントローラー」で正常に使用できます。認めざるを得ませんが、必要な二重引用符に少し混乱しています。(二重引用符なしで試しましたが、if条件はトリガーされません)

If Controller
Condition:     "${command}"=="ARCHIVE_FILE"

私が言ったように、私は上記が機能することを検証しました。しかし、キャプチャした変数を「応答をファイルに保存」のファイル名プレフィックスの一部として使用しようとすると、ファイルは文字どおり「${command}」として保存されます。変数に格納されている値ではありません。

Filename prefix: d:\tmp\${command}

これに関する私の問題は引用符と関係があるのではないかと疑って、実験としてこれを試しました.

Filename prefix: d:\tmp\"${command}"

これにより、変数でキャプチャされた値が得られましたが、二重引用符で囲まれていて、jmeter はまったく満足していませんでした。

jmeter.reporters.ResultSaver: Client Download Start のサンプル ファイルの作成中にエラーが発生しました java.io.FileNotFoundException: D:\apache-jmeter-2.9\tmp\client\"ARCHIVE_FILE" (ファイル名、ディレクトリ名、またはボリューム ラベルの構文が正しくありません)

ここで助けていただければ幸いです。

4

1 に答える 1

1

次のいずれかを実行できます。

1.ファイル名プレフィックス フィールドの二重バックスラッシュ:

d:\\tmp\\${command}

この場合、単一のバックスラッシュは「エスケープ」文字と見なされ、変数はその値に展開されないためです。

また:

2.d:\tmp\スクリプトの他の部分を別の変数として定義します。たとえば、ファイル名プレフィックス フィールドを次の変数に${responsePath}置き換えます。d:\tmp\

${responsePath}${command}

どちらのバリアントも正しく動作しますが、2 番目のバリアントはもう少し一般的なようです。

于 2013-05-03T07:23:02.747 に答える