jmeter获取当前执行脚本路径

背景

一般在做接口有上传或是下载文件时会涉及到文件路径,当跨平台时路径的格式也会不一样,如:windows下分隔符是"/",而linux下是“\”,jmeter脚本跨平台执行时就会出错,为避免此问题,引用变量,路径使用相对值,分隔符自动获取。

具体操作

获取jmeter执行脚本的当前路径,可以使用下面脚本

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

而分隔符可以用变量

${__property(file.separator)}

如:数据文件filename存在脚本执行目录下的data时,就可以写作

${__BeanShell(import org.apache.jmeter.services.FileServer;FileServer.getFileServer().getBaseDir();)}${__property(file.separator)}data${__property(file.separator)}filename

当在实际的脚本中使用时需要注意的是分隔符是属于系统变量,所以书写形式需要注意,要使用"System.getProperty(“file.separator”)}",具体脚本如下
在这里插入图片描述

import org.apache.jmeter.services.FileServer;
//获取当前脚本执行路径及系统分隔符,此变量解决了跨平台的路径问题
String JmeterPath = FileServer.getFileServer().getBaseDir()+System.getProperty("file.separator");
String resPonseCode = prev.getResponseCode();
if(resPonseCode.equals("200")){
    ResponseData = prev.getResponseData();
    String ResponseDataType = ResponseData.getClass().getName();
    if(ResponseDataType.equals("[B")){
        byte[] result = ResponseData;  //这个是获取到请求返回的数据,prev是获取上个请求的返回
        log.warn(result.getClass()+"");
        String file_name = JmeterPath+"template"+System.getProperty("file.separator")+"角色.xlsx";
	
        File file = new File(file_name);
        FileOutputStream out = new FileOutputStream(file);
        out.write(result);
        out.close();
        if(file.exists()){
            //根据实际情况各业务自己判断是否需要补充对导出文件的内容验证,此处暂时只判断文件是否存在
            prev.setResponseData("下载成功","UTF-8");
            log.warn("下载成功");
        }
        else{
            prev.setResponseData("下载失败","UTF-8");
            log.warn("下载失败");
        }
    }
}
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值