【问题标题】:Split the String extracted from json extractor in Jmeter with sets of n使用 n 组拆分从 Jmeter 中的 json 提取器中提取的字符串
【发布时间】:2021-12-16 06:56:48
【问题描述】:

我有一个场景,其中 API 响应的值出现超过 1000 次,我使用带有 ${variable}_all 的 Json 提取器捕获它。

我需要将其拆分为 50 个或更少的集合,并将这些 50 个集合多次参数化到下一个 API 调用中。

有没有办法做到这一点?

【问题讨论】:

    标签: json split jmeter


    【解决方案1】:

    解决方案 1

    您需要对 JSON 响应中的值进行切片。您可以使用JSON JMSEPath Extractor 对前五十个进行切片。来自大量值的值。

    List and Slice Projections

    解决方案 2 如果您想处理串联结果,下面的示例可能会很有用。

    def values_ALL = vars.get("<variable name>_ALL")
    def filteredValues = values_ALL.split(",")[0..50]
    
    for (i in 0..<filteredValues.size()) {
        println(filteredValues[i])
    }
    

    注意:JMeter 变量名区分大小写

    【讨论】:

      【解决方案2】:
      1. 添加 Loop Controller 并使用以下 __groovy() 函数作为“循环计数”

        ${__groovy(vars.get('variable_ALL') as int / 50,)}
        
      2. 在循环控制器内部,您可以使用JSR223 PreProcessor 生成请求正文并引用变量的每个“块”,例如:

        def offset = (vars.get('__jm__Loop Controller__idx')) as int * 50
        
        def payload = new StringBuilder()
        
        offset.upto((offset + 50), { index ->
            payload.append(vars.get('variable_' + index)).append(System.getProperty('line.separator'))
        })
        
        sampler.addNonEncodedArgument('', payload.toString(),  '')
        sampler.setPostBodyRaw(true)
        

      有关 JMeter 中 Groovy 脚本的更多信息:Apache Groovy - Why and How You Should Use It

      如果您需要生成 JSON 有效负载,您可能会发现 Parsing and producing JSON 文章也很有趣

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多