JMeter参数化时CSV动态获取文件路径
一、背景
在性能测试参数化时,需要配置参数化文件的路径,如果在windows中配置路径(data/test.csv),脚本需要放在linux系统中执行压测时会变成(data/test.csv),这就会导致路径报错的问题,如何解决这个问题,具体如下所示。
注意:在性能测试时,不推荐用csv文件,实在要用文件的话可以用txt文件。
二、动态获取路径
在CSV文件参数化时,推荐使用相对路径。
首先,jmeter默认目录是bin文件夹,尤其是在linux系统中启动jmeter时,所以可以将jmeter的脚本也保存在bin目录。
所以要自动化获取csv文件路劲,需要有前提条件:
- CSV 文件保存在 Jmeter 的 bin 目录;
- Jmeter 必须从 bin 目录下启动,不能通过 cmd命令启动,因为从cmd启动时,默认的路径不是bin目录。
注意:
- 当在windows系统中,在bin目录启动jmeter时,默认路径属性值user.dir路径为
C:\apache-jmeter-5.3\bin
,file.separator 文件分隔符的值是 \ - 当在linux系统中,在bin目录启动jmeter时,默认路径属性值user.dir路径为
C:\apache-jmeter-5.3\bin
,file.separator 文件分隔符的值是 /
1、启动方式影响默认路径
当在windows系统中,用cmd命令启动jmeter时,默认路径属性值user.dir路径为C:\Users\xtank
当在windows系统中,在bin目录启动jmeter时,默认路径属性值user.dir路径为C:\apache-jmeter-5.3\bin
,所以推荐在bin目录启动jmeter。具体如下所示:
1.1、当在windows系统中,用cmd命令启动时
1.2、当在windows系统中,用在bin目录直接启动jmeter时
- bin目录中,通过jmeter.bat启动
- 查看jmeter启动后的属性值,默认路径为bin目录
-
windows中启动Jmeter时,文件分隔符为
\
1.3、在linux系统中,用在bin目录直接启动jmeter时
当在linux系统中,在bin目录启动jmeter时,file.separator 文件分隔符的值是 /
#linux系统中下载jmeter
wget https://mirrors.aliyun.com/apache/jmeter/binaries/apache-jmeter-5.5.tgz
#linux系统中解压jmeter
tar -xzf apache-jmeter-5.5.tgz
2、属性值拼接路径
当在windows系统中,将csv测试数据,直接保存在默认路径C:\apache-jmeter-5.3\bin下,如图所示:
当在windows系统中,在bin目录启动jmeter时,默认路径属性值user.dir路径为C:\apache-jmeter-5.3\bin
,所以直接可以配置文件名,就可以读取到测试数据内容,如图所示:
jmeter默认打开bin目录,此时路径将自动拼接是:默认路径+test.csv,也就是C:\apache-jmeter-5.3\bin\test.csv,如图所示,获取文件成功。
当然也可以用jmeter属性值拼接路径,如图:
${__P(user.dir,)}${__P(file.separator,)}test.csv
#拼接后,相当于C:\apache-jmeter-5.3\bin\test.csv
如果测试数据文件(test.csv)放在bin目录下的子文件夹下(scripts),也可以用jmeter属性值拼接路径,如图:
${__P(user.dir,)}${__P(file.separator,)}scripts${__P(file.separator,)}test.csv
#拼接后,相当于C:\apache-jmeter-5.3\bin\scripts\test.csv
综述
-
${__P(user.dir,)}${__P(file.separator,)}test.csv
根据不同的操作系统,以及不同的 Jmeter 安装路径,然后再自动的获取不同系统下的文件路径分隔符,最后再拼接加上文件名称,最终形成测试数据的文件路径。 -
重点注意,CSV 文件放在 Jmeter 的 bin 目录下,且通过要 bin 目录启动 Jmeter