如何在jmeter中多次执行CSV文件
Posted
技术标签:
【中文标题】如何在jmeter中多次执行CSV文件【英文标题】:How to execute the CSV file multiple times in jmeter 【发布时间】:2021-05-16 11:08:28 【问题描述】:我有一个 CSV 文件(包含 2 个请求),我想以以下方式执行 JMeter:
THREAD 1:
LoopCount 1
Request 1
Request 2
LoopCount 2
Request 1
Request 2
LoopCount 3
Request 1
Request 2
我当前的 JMX 文件如下所示
THREAD GROUP(Threads=1, LoopCount=3):
Loop Controller(LoopCount=forever)
HTTP Request
CSV Data Config(Recycle on EOF=False, Stop Thread on EOF=True)
但它只执行一次(1 个循环)。如果我在 EOF = True 上修改 Recycle,它将永远执行。
【问题讨论】:
【参考方案1】:-
您有
Stop Thread on EOF=True
,它指示JMeter 在到达文件末尾时停止线程(虚拟用户)
您已将 Loop Controller 配置为永远循环,这意味着您的测试永远不会结束
您拥有Recycle on EOF=False
,这意味着当到达 CSV 文件的最后一行时,您将获得 <EOF>
值存储在每个下一个请求的相应变量中
所以
删除此循环控制器 并在文件末尾回收/停止线程方面将 CSV 数据集配置重置为其默认设置:在上面的演示图片中:
__threadNum() function返回当前线程数(虚拟用户) $__jm__Thread Group__idx
是 pre-defined variable,它返回线程组的当前循环
更多信息:Using CSV DATA SET CONFIG
【讨论】:
基于您的配置(线程=2,LoopCount=3,csv 文件中的请求数=2)。我预计总共有 12 个请求。用户 1:R1 R2 R1 R2 R1 R2 和用户 2:R1 R2 R1 R2 R1 R2。但是你的程序只发送了 6 个请求。 我不知道该 csv 文件中有多少请求。所以对于 3 的循环计数,每个用户应该执行 csv 文件 3 次。但无论如何我找到了一种方法=>我实际上是在 bean shell 预处理中读取 csv 并计算请求数。然后我会在它发送所有请求时停止 beanshell 预处理器本身的线程。 然后把Loop Controller放回去,将循环数设置为CSV文件中的行数,可以像$__groovy(new File('test.csv').readLines().size(),)
一样使用__groovy() function计算,请避免使用Beanshell编写脚本, since JMeter 3.1 it's recommended to use JSR223 Test Elements and Groovy 语言。更多信息:Apache Groovy - Why and How You Should Use It以上是关于如何在jmeter中多次执行CSV文件的主要内容,如果未能解决你的问题,请参考以下文章
使用 JMeter 中的 CSV 数据集配置多次运行 HTTP 请求后提取有序结果
如何使用 JMeter 测试 xlsx/csv 和其他文件的下载过程?