jmeter 如何使用while控制器和csv数据集配置元素来遍历整个csv文件,而不管遇到的错误?

w41d8nur  于 2023-10-20  发布在  其他
关注(0)|答案(1)|浏览(125)

在Jmeter中,我有一个CSV Data Set Config,它指向一个包含一列和多个表名的csv文件。我想把整个列表遍历到文件的末尾,并对列表中的每个表执行DB查询。我已经成功了,但只有一个问题:当JDBC请求采样器对一个不存在的表执行SQL查询时(无论出于何种原因),while循环中断,文件中的其余行不会生成所需的查询。

我有一个没有条件集的while控制器,在它下面有一个CSV数据集配置,我指向一个CSV文件,该文件在一列下存储了很多名称:表名。
我还有一个JDBC Request元素,它使用{query}变量中的任何值进行查询。此查询变量由预处理器填充:

// Read the value from the CSV Data Set Config
def tableName = vars.get("tableName");
log.info("Target table name:" + tableName)

// Replace the placeholder in the query with the table name from the current iteration of the CSV file
String query = "SELECT count(*) FROM " + tableName + ";" ;

vars.put("query", query);

log.info("Target query:" + query )

我有一个后处理器,它可以帮助我将JDBC请求元素中的表名和计数存储到LinkedList中,并在循环外部打印。
我的问题是,如果列表中的一个表不存在,JDBC请求采样器会记录一个错误,while循环就会中断:
示例:错误:关系“schema.tablename”不存在,位置:22
因此,我需要一种方法来遍历CSV文件的所有内容,直到文件的末尾,并且在While循环中的JDBC请求遇到错误时不会停止。
任何帮助将不胜感激。

whlutmcx

whlutmcx1#

最简单的解决方案是将While控制器替换为Loop控制器。
您可以使用以下__groovy() function作为循环计数:

${__groovy(new File('/path/to/your/file.csv').readLines().size(),)}

这样,循环控制器将执行与CSV文件中行数相同的循环次数,不多也不少。
还要仔细检查您的线程组设置,并确保“采样器错误后采取的操作”设置为Continue

相关问题