Jmeter 将响应数据值保存到变量并用 CSV 文件中的另一个值覆盖它
Jmeter save response data values to a variables and overwrite it with another values from CSV file
是否可以在 Jmeter 中获取变量(例如 ${variable_1}
我在正则表达式的帮助下从 HTTP 请求的响应主体收到的值,读取一些 .csv
文件并找到以与 ${variable_1}
完全相同的值开头的行(假设所有行都有不同的值),然后读取该行中的下一个单元格(几乎 .csv
文件仅包含 2 列)以及那里的任何值, 将其覆盖为 ${variable_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 测试中使用脚本的更多详细信息,请参阅 How to Use BeanShell: JMeter's Favorite Built-in Component 文章。
另外请注意,Beanshell 有一些严重的性能缺陷,并且与使用 Java 7+ 语法(泛型、labmdas、多捕获等)编写的代码不兼容。如果您使用 setUp 线程组中某处的一个线程更改变量 - 这很好,但如果线程数很高 and/or CSV 文件很大 - 最好考虑 JSR223 Sampler and Groovy language。
是否可以在 Jmeter 中获取变量(例如 ${variable_1}
我在正则表达式的帮助下从 HTTP 请求的响应主体收到的值,读取一些 .csv
文件并找到以与 ${variable_1}
完全相同的值开头的行(假设所有行都有不同的值),然后读取该行中的下一个单元格(几乎 .csv
文件仅包含 2 列)以及那里的任何值, 将其覆盖为 ${variable_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 测试中使用脚本的更多详细信息,请参阅 How to Use BeanShell: JMeter's Favorite Built-in Component 文章。
另外请注意,Beanshell 有一些严重的性能缺陷,并且与使用 Java 7+ 语法(泛型、labmdas、多捕获等)编写的代码不兼容。如果您使用 setUp 线程组中某处的一个线程更改变量 - 这很好,但如果线程数很高 and/or CSV 文件很大 - 最好考虑 JSR223 Sampler and Groovy language。