如何通过Beanshell预处理器在JMeter中发送之前修改HTTP请求?

时间:2017-05-17 13:15:34

标签: jmeter beanshell

我的csv文件中有测试用例。请求网址包含自定义变量。

示例网址:.../abc/$id

我需要将id替换为我们从上一个请求得到的id。我使用json提取器从响应中获取id。现在我需要在下一个测试用例请求中更新此id。使用以下代码从jmeter上下文获取请求URL:

String path = ctx.getCurrentSampler().toString(); 
path.replaceAll("$id", id);

我无法在jmeter上下文(ctx

中设置此更新的URL

2 个答案:

答案 0 :(得分:3)

  1. 您需要为path变量
  2. 分配新的路径值
  3. 您需要使用sampler.setPath() method
  4. 将采样器路径设置为新值

    所以你需要修改你的代码,如:

    String path = ctx.getCurrentSampler().toString();
    path = path.replaceAll("$id", id);
    sampler.setPath(path);
    

    演示:

    JSR223 PreProcessor change path

    同时考虑切换到JSR223 PreProcessorGroovy language,因为Groovy性能要高得多,它更好地支持新的Java功能,并提供一些额外的“语法糖”。有关详细信息,请参阅Groovy is the New Black文章。

答案 1 :(得分:1)

尽可能避免使用前/后处理器。 您的要求非常简单直接。

在路径中直接使用它 - 假设id是具有值的变量的名称。

/abc/${id}