Jmeter-找到正确的项目后停止读取CSV文件
问题内容:
我有一个CSV文件,例如:
brandid1,brandurl1,producturl1
brandid2,brandurl2,producturl2
brandid3,brandurl3,producturl3
以及从先前的响应中获得的变量$ {brandid}。
现在,我想从CSV文件中查找一个brandurl和producturl(如果brandid相同)(例如:$ {brandid} == $
{brandid2},它将返回brandurl2和producturl2),它们的脚本将停止,而无需运行整个csv文件。
我必须使用“ While”控制器和BSF预处理程序,但脚本始终运行整个csv文件。
While(“ $ {tmp}” ==“ 1”)
--http请求(使用brandurl,producturl)
--csv文件
--HTTP标头管理器
--BSF预处理器
使用tmp在global tmp=1
和BSF中声明如下:
var brand_idOfWH = vars.get("brand_idOfWH");
var brandid_csv = vars.get("brandid");
var brandurl = vars.get("brandurl");
vars.put("brand_url",brandurl);
var producturl = vars.get("producturl");
vars.put("product_url",producturl);
if (brand_idOfWH == brandid_csv)
{
vars.put("tmp","0");
}
如果发现正确,请帮助我停止读取CSV文件 brandid
问题答案:
-
您正在滥用While Controller,根据文档,它接受 function 或 variable ,它无法解析您的表达式,因此不会退出循环。正确的功能如下所示:
${__javaScript("${tmp}" == "1",)}
-
不建议使用BSF测试元素进行脚本编写。如果必须通过脚本克服JMeter的限制,请考虑使用JSR223测试元素和“ groovy”作为语言-这样,您将获得最佳性能。请参见Beanshell与JSR223与Java JMeter脚本:您一直在等待的性能下降!指南,以获取有关安装Groovy脚本引擎支持和Groovy脚本最佳实践的详细说明。