【问题标题】:How to call JSR223 Preprocessor in Jmeter only once for each request如何为每个请求仅在 Jmeter 中调用一次 JSR223 预处理器
【发布时间】:2023-01-20 17:01:01
【问题描述】:

在我的脚本中使用 JSR 223 预处理器。在脚本中有一个 API,其正文数据如下:

{`"key":"appStorage","value":"{\"model_sta10:\":\"{\\\"StratSim_Controls!R15C5\\\":\\\"10\\\",\\\"Inputs_Main!R23C5\\\":\\\"10amname\\\"}\",\"return_url\":\"/main/welcome-screen\",\`round_value`\":\"1\",\"round-one-star10d\":\"true\",\"intro-comple10\":\"true\"}"}

但是,当我执行脚本时,它无法正常工作并收到错误消息,并且从响应中删除了一个松弛部分。

所以我添加了带有以下代码的 JSR 223 预处理器以供请求:

`import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase
def request = sampler.getArguments().getArgument(0).getValue()
request = request.replace('te',vars.get('te')).replace('teamname', vars.get('teamname'))
def arguments = new org.apache.jmeter.config.Arguments();
sampler.setArguments(arguments);
sampler.addNonEncodedArgument('',request,'')
sampler.setPostBodyRaw(true)
`

并在正文中传递参数:

{"key":"appStorage","value":"{\"model_state:\":\"{\\\"StratSim_Controls!R15C5\\\":\\\"te\\\",\\\"Inputs_Main!R23C5\\\":\\\"teamname\\\"}\",\"return_url\":\"/main/welcome-screen\",\"round_value\":\"1\",\"round-one-started\":\"true\",\"intro-complete\":\"true\"}"}
`

但是在脚本中这个请求多次出现,我必须在每个请求中添加 JSR 223 预处理器,我们有什么解决方案可以让所有请求只使用一次代码吗?

我尝试了解决方案,在线程组中添加了 JSR223 预处理器,但它无法获取 getCalue() 的错误。

【问题讨论】:

    标签: performance jmeter performance-testing jmeter-plugins jmeter-5.0


    【解决方案1】:

    看起来 JSR223 预处理器的 Scope 中至少有一个没有请求正文的采样器,即您正在发送不带参数的 GET 请求。

    您可以使用 sampler 速记和一些 if conditional structure 来:

    • 检查当前sampler是否是HTTP Request采样器
    • 检查它是否有至少 1 个参数

    就像是:

    if (sampler instanceof org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy) {
        if (sampler.getArguments().getArgument(0) != null) {
            //your code here
        }
    } 
    

    如果将 JSR223 预处理器放在线程组级别,它将在线程组中的每个采样器之前执行,因此您可能需要提出更多条件来过滤掉不需要的执行。

    更多资讯:The Groovy Templates Cheat Sheet for JMeter

    【讨论】:

      猜你喜欢
      • 2022-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多