2012-06-29 63 views
11

javaで書かれたカスタムjmeterサンプラーがファイルの場所とファイルパスをパラメータとして受け取り、それらに基づいてjsonファイルを作成して(テンプレートファイルに基づいて) 。私のスクリプトはさまざまなディレクトリ構造を持つ複数の環境で動作する必要があるため、サンプラーで有効なjsonに変換する必要があるファイルを指す相対パスを使用する必要があります。スクリプトがjmeterの変数として存在するディレクトリを取得する方法はありますか?私は$ {user.dir}を試しましたが、jmeterが起動したディレクトリを返します。スクリプトが存在するディレクトリではありません。この値を取得するために参照できる別のシステムプロパティがありますか?そうでない場合は、誰もプログラムでこれを達成しましたか?Jmeterでjmeterスクリプトのディレクトリを取得する方法

+0

http://stackoverflow.com/questions/9179463/access-to-jmeter-script-pathに記載されているソリューションを試してみましたか? – DComte

答えて

28

私はPOSTリクエストの一部として署名ファイルをアップロードしなければならなかった昔と同じような状況に遭遇しました。このシグネチャファイルは、JMeterスクリプトが配置されたフォルダ構造に関連していました。

次のBeanShell式(システムレベルのプロパティとしてアクセス可能)を使用して、JMeterのテストケースが配置されている場所からの相対パスを解決してみてください。

${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}${__BeanShell(File.separator,)} 
  • あなたは、単にファイル名を追加することによって、「要求にファイルを送信」フィールドに/ POSTを送信したいファイルの名前でこれを入力することができます。

    ${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}${__BeanShell(File.separator,)}fileName.sig

  • よりクリーナー実装は(スコープに応じてローカルまたはグローバル)変数として宣言し、適切なフィールド内にこの変数を使用することになります。

    absolutePath = ${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}${__BeanShell(File.separator,)}

    ${absolutePath}fileName.sig

注:あなたは、このようなジェンキンスとして継続的インテグレーションシステムにあなたのJMeterのテストファイルをプラグインする予定の場合このアプローチは超便利です。テストケースをよりメンテナンス可能にします。

+0

指定された構文(Say:C:\ Users \ test.xlsx)でファイルのパスを取得し、変数に格納しています。しかし、JavaのI/Oクラスファイル(FileInputStream)で同じ変数を使用した場合、内容を読み取る際にエラーが発生します。私はデバッグ時にバックスラッシュの問題を発見しました。同じ変数をFileInputStreamクラスに渡すことができませんでした。ファイル区切りをスラッシュに変更する方法はありますか? – Manigandan

+1

str = str.replace( "\\"、 "/"); ? – stuxnetting

+0

これは機能しません。 – Manigandan

関連する問題