2015-01-07 22 views
2

我有一個由Maven執行的Jmeter項目,能夠通過路徑src/test/jmeter/external-scripts-dir/script1.bsh找到外部Beanshell腳本,但是當我在計算機的GUI中直接運行Jmeter時,相對位置不起作用,並且測試不能運行獨立。這迫使我從Maven運行Jmeter。如何從本身內部獲取Jmeter .jmx項目文件的絕對文件夾位置?

所以,我必須位於像C:\files\git\projectA\src\test\jmeter\Project.jmx Maven的佈局位置的項目文件,但因爲我的JMeter從它的安裝文件夾在C:\Jmeter2.12跑,實在找不到我前面提到的外部腳本的相對位置。

爲了解決這個問題,我需要的是將變量設置爲包含.jmx文件的目錄。有沒有可能的方法來做到這一點?

我可以很容易地動態確定Jmeter(C:\Jmeter2.12)的主頁(使用下面的代碼),但這並不能幫助我獲得項目文件的位置。

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

有沒有類似於上面的代碼,可以讓我推斷出項目文件的位置?

+1

不知道這是否幫助,但你可知道,你可以在GUI模式下使用米Maven插件運行JMeter的? 只需進入您的項目並執行: mvn jmeter:gui – Ardesco

+0

http://stackoverflow.com/a/36860307/3940047 - 爲GUI /非GUI模式執行獲取jmx測試計劃文件位置。 –

回答

5

如果你正在尋找的方式來

${__BeanShell(import org.apache.jmeter.gui.GuiPackage;GuiPackage.getInstance().getTestPlanFile();)} 

如果剎車將其分爲5個系將有:當您以GUI模式運行JMeter的,你可以試試下面的BeanShell表達式查找當前腳本

import org.apache.jmeter.gui.GuiPackage; 
import org.apache.commons.io.FilenameUtils; 
String testPlanFile = GuiPackage.getInstance().getTestPlanFile(); 
String testPlanFileDir = FilenameUtils.getFullPathNoEndSeparator(testPlanFile); 
vars.put("testPlanFileDir", testPlanFileDir); 
log.info("testPlanFileDir:" + testPlanFileDir); 

您當前的.jmx文件填充存儲爲scriptFile JMeter變量。

參考文獻:

+0

今天我會試一試。謝謝。 – djangofan

+0

謝謝,它工作。 – djangofan

2

的解決方案是(感謝Ardesco)執行以下操作:

使用以下變量,在測試計劃的全局變量設置:

projectHome = ${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)} 
jmeterHome = ${__BeanShell(System.getProperty("user.dir");)} 
scriptHome = ${projectHome}/scripts 
+1

您可以使用__P語法獲取屬性,因此jmeterHome可以簡化爲$ {__ P(user.dir)} – Cyberwiz

相關問題