JMeter(Bean Shell Sampler) + Git + Jenkins - Bean Sampler 脚本不读取 csv 文件

JMeter(Bean Shell Sampler) + Git + Jenkins - Bean Sampler script not Reading the csv file

我在 Jmeter 中创建了 API 个测试并提交到 GIT 分支。 我所有的 JMeter 测试都是从 Jenkins Pipeline 作业执行的。

问题: 在 Jmeter 测试中,我使用了一个从 CSV 文件读取数据的 bean shell 采样器。参考下面的代码。

LineNumberReader lineReader = new LineNumberReader(new FileReader(new File("${csv}")));
String line = null;
int count = 1;
while ((line = lineReader.readLine()) != null) {
 String[] Test_details = line.split(",");
 props.put("Test_id_" + count, Test_details[0]);
 props.put("scenario_id_" + count, Test_details[1]);
 count++;
}
lineReader.close();

在上面的脚本中,CSV 路径引用自 Jmeter 中的用户定义变量 (csv = 'FilePath')

当我从 Jenkins 执行测试时,未检索到 CSV 文件中的数据并且测试失败。

注意:当我从本地计算机执行时,会从 CSV 中检索数据并通过测试。

从 Jenkins 执行时,CSV 路径在用户定义的变量中给出。 csv = apitests\src\test\jmeter\data\Testdata.csv

以下是文件夹结构 Folder Struture

如果您 运行 通过 JMeter Maven plugin the test base directory (a.k.a Java user.dir 测试)看起来像:

target/somerandomguid/jmeter/bin

因此,如果您需要获取文件的相对路径,则需要向上移动 4 个级别,然后转到 src/test/jmeter/data,例如:

new File("../../../../src/test/jmeter/data/Testdata.csv")

还要注意 starting from JMeter 3.1 you're supposed to be using JSR223 Test Elements and Groovy language for scripting so it might be a good chance for the change. More information: Apache Groovy - Why and How You Should Use It