java - Jmeter:在 CSV 行中执行计算并在测试中使用计算值
问题描述
我一直在尝试创建 Jmeter 测试以使用 CSV 在更真实的时间上执行。我有一个包含时间行的 CSV。我想在不同线程上以重复方式基于 2 个连续时间之间的差异运行测试。我的 CSV 如下所示。我想计算时间 = Time2-Time1、Time= Time3-Time2 等时间。将所有这些时间保存在另一个 excel 中。
我试图运行 BeanShell 脚本并关注了几篇文章,但没有成功。
例如:${Test}=${__BeanShell(${__CSVRead(Test.csv,1)}${__CSVRead(Test.csv,next)}-${__CSVRead(Test.csv,1)})}
这适用于单个值,但不确定如何为 CSV 的所有值自动执行此操作以及如何将其保存在特定行中。任何帮助都将非常可观。
解决方案
从 JMeter 3.1 开始,您应该使用 JSR223 测试元素和 Groovy 语言编写脚本,因此请考虑将您的代码更改为:
def lines = new File('old.csv').readLines()
lines.eachWithIndex { line, index ->
new File('new.csv') << line
if (index < lines.size() - 1) {
def currentTime = line.split(',')[1] as long
def nextTime = lines.get(index + 1).split(',')[1] as long
def delta = nextTime - currentTime
new File('new.csv') << ',' << delta << System.getProperty('line.separator')
}
}
new File('new.csv') << ',' << '0'
脚本的好地方是JSR223 Sampler在setUp Thread Group的某个地方,如果您不希望采样器出现在测试结果SampleResult.setIgnore()
中,请在脚本的开头添加
推荐阅读
- javascript - 使用具有先前请求中设置的状态的变量发出 axios 请求
- python - 使用分散数据的隐式曲线拟合
- angular - 在角度 6 中的服务功能内分配值的问题
- android - 绘画应用程序中的比例因子是错误的
- python - 在 Pandas 中按周分组数据后无法调用特定列
- postgresql - 在 /docker-entrypoint-initdb.d/db_init.sh 中运行 psql 命令时出错(psql:无法连接到服务器:连接被拒绝)
- python - 将网页抓取结果存储在 DataFrame 或字典中
- c# - IEnumerable 作为流发射?
- imacros - 如何在 Instagram 的追随者弹出窗口中向下滚动?
- performance - Wolfram Mathematica InverseFunction 的性能