Scripting Jmeter将响应数据值保存到变量中,并用CSV文件中的其他值覆盖它

Scripting Jmeter将响应数据值保存到变量中,并用CSV文件中的其他值覆盖它,scripting,jmeter,beanshell,Scripting,Jmeter,Beanshell,在Jmeter中是否可以使用变量(例如,${variable_1},我在regex的帮助下从HTTP请求的响应体接收到该变量的值,读取一些.csv文件,并找到与${variable_1}值完全相同的行(假设所有行都有不同的值),然后读取此行中的下一个单元格(几乎.csv文件只包含2列),无论其中有什么值,都将其覆盖到${variable\u 1}?有人告诉我,在BeanShell的帮助下,这是可能的,但我对其中的脚本编写不太熟悉。非常感谢您的任何建议。给您: import org.apache.

在Jmeter中是否可以使用变量(例如,
${variable_1}
,我在regex的帮助下从HTTP请求的响应体接收到该变量的值,读取一些
.csv
文件,并找到与
${variable_1}值完全相同的行(假设所有行都有不同的值)
,然后读取此行中的下一个单元格(几乎
.csv
文件只包含2列),无论其中有什么值,都将其覆盖到
${variable\u 1}
?有人告诉我,在BeanShell的帮助下,这是可能的,但我对其中的脚本编写不太熟悉。非常感谢您的任何建议。

给您:

import org.apache.commons.io.FileUtils;
import java.nio.charset.StandardCharsets;

log.info("Previous value of variable_1 = " + vars.get("variable_1"));

List csvLines = FileUtils.readLines(new File("test.csv"), StandardCharsets.UTF_8);

for (String csvLine : csvLines) {
    if (csvLine.startsWith(vars.get("variable_1"))) {
        vars.put("variable_1", csvLine.split(",")[1]);
        break;
    }
}

log.info("New value of variable_1 = " + vars.get("variable_1"));
演示:

有关在JMeter测试中使用脚本的更多详细信息,请参阅本文


还要注意的是,Beanshell存在一些严重的性能缺陷,与用Java 7+语法编写的代码(泛型、LabMDA、多捕获等)不兼容如果在安装线程组中使用一个线程来改变变量——这是很好的,但是如果线程的数量是高的和/或CSV文件是大的,最好考虑一下。

德米特里,请告知您是否熟悉。在使用BeS壳代码之前,什么是最合适的方法来测试BeSide?Eclipse IDE?