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

如何在通过Beanshell预处理器发送JMeter之前修改HTTP请求?,jmeter,beanshell,Jmeter,Beanshell,我的csv文件中有测试用例。请求URL有一个自定义变量 示例URL:../abc/$id 我需要将这个id替换为我们从上一个请求中得到的id。我使用json提取器从响应中获取id。现在我需要在下一个测试用例请求中更新这个id。使用以下代码从jmeter上下文获取请求URL: String path = ctx.getCurrentSampler().toString(); path.replaceAll("$id", id); 我无法在jmeter上下文(ctx)中设置此更新的URL 您需要

我的csv文件中有测试用例。请求URL有一个自定义变量

示例URL:
../abc/$id

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

String path = ctx.getCurrentSampler().toString(); 
path.replaceAll("$id", id);
我无法在jmeter上下文(
ctx
)中设置此更新的URL

  • 您需要为
    path
    变量指定新的路径值
  • 您需要使用以下命令将采样器路径设置为新值
  • 因此,您需要修改代码,如:

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


    也考虑切换到Groovy性能,它更好地支持新的java特性,并在顶部提供一些额外的“语法糖”。有关详细信息,请参阅文章

  • 您需要为
    path
    变量指定新的路径值
  • 您需要使用以下命令将采样器路径设置为新值
  • 因此,您需要修改代码,如:

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



    也考虑切换到Groovy性能,它更好地支持新的java特性,并在顶部提供一些额外的“语法糖”。有关详细信息,请参阅文章

    尽可能避免使用前置/后置处理器。 你的要求非常简单明了

    在路径中直接使用此选项-假设
    id
    是具有该值的变量的名称


    /abc/${id}

    尽可能避免使用前置/后置处理器。 你的要求非常简单明了

    在路径中直接使用此选项-假设
    id
    是具有该值的变量的名称

    /abc/${id}