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


问题答案:
  1. 您正在滥用While Controller,根据文档,它接受 functionvariable ,它无法解析您的表达式,因此不会退出循环。正确的功能如下所示:

    ${__javaScript("${tmp}" == "1",)}
    
  2. 不建议使用BSF测试元素进行脚本编写。如果必须通过脚本克服JMeter的限制,请考虑使用JSR223测试元素和“ groovy”作为语言-这样,您将获得最佳性能。请参见Beanshell与JSR223与Java JMeter脚本:您一直在等待的性能下降!指南,以获取有关安装Groovy脚本引擎支持和Groovy脚本最佳实践的详细说明。