这个问题困扰了我好久,终于解决了!!!分享给你们,好东西要一起用
工作中遇到很多的上传下载操作,要用jmeter实现自动化,脚本中不知道怎么写才能取到相对路径,所以刚开始为了完成工作就写了绝对路径。代码上传到服务器才发现运行不了,找不到路径,又改成服务器对应文件的绝对路径,调试通过后集成到jenkins上之后运行也是正常的。
第二天,脚本执行失败了,我在本地执行,又挂了,找不到路径。好气。。 网上搜索了一番无果,只能每次在服务器上执行。
刚开始没有什么问题,就是上服务器执行个代码么,分分钟搞定。
时间久了,上传下载相关的脚本多了,每次都要连接服务器去看,别人要用服务器就会打起来。。 在我不懈的努力下,中午找到了解决办法,哈哈哈。
(前面都是废话,你可以不看q(≧▽≦q))
第一种方法
直接使用jmeter的函数:
点击函数助手(相信你们知道在哪找,不知道的自己百度哦),功能选择_BeanShell
自己填一下表达式就可以了,需要什么写什么。
我现在要取执行当前脚本的路径,表达式就是这样子:
import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();
(了解一些java的应该能看明白这个表达式)
第二行是定义参数名的,可以写也可以不写哦
点击生成就取到了你当前的脚本的路径啦
直接参数化,我直接把参数写在了用户自定义变量里(你自己可以选择,写哪都行)
我的文件是和jmx脚本放在同一个文件下的,然后直接这样调用接口就好啦。
导入成功了,完美。
第二种方法
你可以添加BeanShell Sampler,然后写一些代码去实现
import org.apache.jmeter.services.FileServer;
import com.bzj.utils.*;
String baseDir=FileServer.getFileServer().getBaseDir(); //获取当前脚本的路径
log.info("baseDir="+baseDir);//打印出来
这个跟上面那个函数助手的功能基本上是一样的啦。
但是如果你上传的文件需要做一些处理的话,最好是用第二种方式
之前遇到一些功能,会涉及到一些Excel的一些字段要改变,每次上传的不能重复,所以就用的第二种方式去做。
好啦,就说这么多,有问题可以留言哟。