我有一个测试计划,其中包含一个线程组,其中一个HttpRequest采样器,JRS223PreProcessor和一个csv数据集配置。我需要在运行时从csv中读取第2列的当前值,并在我的JSR223 PreProcessor中使用它。为此,我在测试计划上定义了一个变量:
名称$ {__ CSVRead(C:/Users/marial/Desktop/csvs/csv_hotelCodeReq.txt,2)
在JSR223预处理器中,我这样处理:
String name= new String(vars.get("name"));
我希望此值在读取的每一行都发生变化,但是没有,它总是采用遇到的第一个值。有人知道为什么吗?
更具体地说,如果我有csv文件:
1,2,firstName1:lastName1
3,2,firstName2:lastName2
,循环计数= 2,users = 1比name的值大:
loop1:firstName1:lastName1
loop2:firstName1:lastName1
其他值已正确处理,因此转到下一行。
答案 0 :(得分:0)
请注意,测试计划中的所有UDV元素-无论它们在何处-都会在开始时进行处理。
因此,您的__CSVRead() function仅在测试启动期间被评估,并且仅被评估一次
解决方案是将函数移至JSR223 PreProcessor的“参数”部分,您将能够在Groovy脚本中以Parameters
的形式访问函数输出:
String name = Parameters
演示:
这样,每次调用JSR223 PreProcessor时都将执行__CSVRead()函数。查阅Apache Groovy - Why and How You Should Use It文章,以了解有关JMeter中Groovy脚本的更多信息