我如何在 jmeter 中将动态值传递给 url

how can i pass dynamic values to url in jmeter

我必须给 url 动态值,它需要用户数量和他们的年龄,可以通过网页选择。但我想使用 BeanShell PostProcessorJmeter 中给出它。 帮助我,因为我是 Jmeter.

的新手

这是路径:

/destinations/packages?airports%5B%5D=LGW&units%5B%5D=000577%3ADESTINATION&when=29-05-2016&until=&flexibility=true&flexibleDays=3&noOfAdults=2&noOfSeniors=0&noOfChildren=1&childrenAge=3&duration=7114&first=0&searchType=search&searchRequestType=ins&sp=true&multiSelect=true

据我所知,您可以使用 CSV 数据集配置。

  1. 使用要用于测试的数据创建 .txt 文件;
  2. 将上面的.txt文件放到你的.jmx文件所在的文件夹中;
  3. 在您的测试计划中:在您的请求采样器下 - 放置 CSV 数据集配置;

然后,如果您需要在一个线程组中使用动态值 => 将这些数据引用为 ${quanity}${age}在你url.

如果您需要跨线程组传递这些值 => 添加 BeanShell 断言

然后(在另一个 Tread 组中)将它们称为 ${__property(_quantity)},${__property (_age)}.

希望对您有帮助。

  1. 首先你需要Beanshell PreProcessor,而不是Beanshell PostProcessor。
  2. 所有这些参数基本上都是name/value对,可以通过HTTPSamplerBaseclass来定义。 HTTPSamplerBase class 实例作为 sampler 预定义变量可用于 Beanshell 预处理器,因此如果您将以下代码添加到 Beanshell 预处理器 "Script" 区域

    sampler.addEncodedArgument("airports[]","LGW");
    sampler.addEncodedArgument("units[]","000577:DESTINATION");
    sampler.addEncodedArgument("when","29-05-2016");
    sampler.addEncodedArgument("until","");
    sampler.addEncodedArgument("flexibility", "true");
    sampler.addEncodedArgument("flexibleDays","3");
    sampler.addEncodedArgument("noOfAdults","2");
    //etc
    

    您的 HTTP 请求将填充您通过 Beanshell 设置的值。

JMeter 变量可以通过 vars shorthand 访问,它代表 JMeterVariables class 实例。

String airport = vars.get("airport");
sampler.addEncodedArgument("airports[]", airport);
//etc

有关如何在 Jmeter 中使用 Beanshell 测试元素的全面信息,请参阅 How to Use BeanShell: JMeter's Favorite Built-in Component 文章。

请记住,建议尽可能避免编写脚本,因此如果有其他方法可以实现您的任务 - 那就去做吧。