我如何在 jmeter 中迭代 CSV 创建新线程
How do i iterate through CSV in jmeter creating new thread
我正在尝试设置 jmeter,其中我想读取包含 200000 行的整个 csv 文件,并且我想遍历每一行创建新线程,因为我使用的是需要新线程的 JSR223 预处理器从请求正文中删除空参数。出于某种原因,当我使用 while 循环时,只有第一个测试通过,其余测试失败,因为 JSR223 预处理器继续读取前一个线程。我还取消选中 缓存的编译脚本(如果可用) 但仍然没有成功。我还想补充一点,当我明确指定线程数为 200000 中的 100 个时,我的 100 个测试都通过了,因为它每次都读取新线程。下面是我的设置截图:
失败 -
这就过去了 -
我正在使用的 JSR223 预处理器脚本:
def request = new groovy.json.JsonSlurper().parseText(sampler.getArguments().getArgument(0).getValue())
def newRequest = evaluate(request.inspect())
request.body.each { entry ->
if (entry.getValue().equals('')) {
newRequest.body.remove(entry.getKey())
}
}
sampler.getArguments().removeAllArguments()
sampler.addNonEncodedArgument('', new groovy.json.JsonBuilder(newRequest).toPrettyString(), '')
sampler.setPostBodyRaw(true)
使用 while 控制器时的控制台日志
没有看到就无法提供全面的答案:
- 你的While Controller条件节
- CSV 文件的前 3 行
- 您的CSV Data Set Config设置
- 您的 HTTP Request 采样器参数或正文
仔细检查以下内容:
- 比较 While 控制器下第一个和第二个请求的 HTTP 请求采样器主体
- 源自 CSV 数据集配置的 JMeter 变量(您可以使用 Debug Sampler 和查看结果树侦听器组合来检查它们)
Enable debug logging for the While Controller,可能是它没有按照您的预期进行,可以通过在 log4j2.xml[ 中添加下一行来完成=39=] 文件:
<Logger name="org.apache.jmeter.control.WhileController" level="debug" />
替换为:
sampler.getArguments().removeAllArguments()
作者:
def arguments = new org.apache.jmeter.config.Arguments();
sampler.setArguments(arguments);
如果您想正确学习 jmeter,这篇 book 会对您有所帮助。
我正在尝试设置 jmeter,其中我想读取包含 200000 行的整个 csv 文件,并且我想遍历每一行创建新线程,因为我使用的是需要新线程的 JSR223 预处理器从请求正文中删除空参数。出于某种原因,当我使用 while 循环时,只有第一个测试通过,其余测试失败,因为 JSR223 预处理器继续读取前一个线程。我还取消选中 缓存的编译脚本(如果可用) 但仍然没有成功。我还想补充一点,当我明确指定线程数为 200000 中的 100 个时,我的 100 个测试都通过了,因为它每次都读取新线程。下面是我的设置截图:
失败 -
这就过去了 -
我正在使用的 JSR223 预处理器脚本:
def request = new groovy.json.JsonSlurper().parseText(sampler.getArguments().getArgument(0).getValue())
def newRequest = evaluate(request.inspect())
request.body.each { entry ->
if (entry.getValue().equals('')) {
newRequest.body.remove(entry.getKey())
}
}
sampler.getArguments().removeAllArguments()
sampler.addNonEncodedArgument('', new groovy.json.JsonBuilder(newRequest).toPrettyString(), '')
sampler.setPostBodyRaw(true)
使用 while 控制器时的控制台日志
没有看到就无法提供全面的答案:
- 你的While Controller条件节
- CSV 文件的前 3 行
- 您的CSV Data Set Config设置
- 您的 HTTP Request 采样器参数或正文
仔细检查以下内容:
- 比较 While 控制器下第一个和第二个请求的 HTTP 请求采样器主体
- 源自 CSV 数据集配置的 JMeter 变量(您可以使用 Debug Sampler 和查看结果树侦听器组合来检查它们)
Enable debug logging for the While Controller,可能是它没有按照您的预期进行,可以通过在 log4j2.xml[ 中添加下一行来完成=39=] 文件:
<Logger name="org.apache.jmeter.control.WhileController" level="debug" />
替换为:
sampler.getArguments().removeAllArguments()
作者:
def arguments = new org.apache.jmeter.config.Arguments();
sampler.setArguments(arguments);
如果您想正确学习 jmeter,这篇 book 会对您有所帮助。