如何在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 和其他文件的下载过程?

如何在CSV文件末尾多次添加相同的字符串?

如何在 jmeter 的 post 请求中发送 csv 文件或 json 数据?

如何使用 jmeter 覆盖 csv 文件中的数据

如何在 jmeter 中生成测试结果 (CSV) 文件和 JTL 文件?