【问题标题】:Jmeter - How to handle duplicate values captured in RegExpression from the same responseJmeter - 如何处理在 RegExpression 中从同一响应中捕获的重复值
【发布时间】:2018-06-11 16:28:36
【问题描述】:

如何确保/处理在使用正则表达式时不会捕获重复值?

在我的场景中,我需要从我的回复中获取多个报价。但不能在交易中一次又一次地使用相同的优惠

【问题讨论】:

    标签: jmeter jmeter-plugins jmeter-3.2 jmeter-4.0


    【解决方案1】:

    有多种方法可以做到这一点。如果您使用默认的Regular Expression Extractor,问题是它会创建变量(例如:offer_1、offer_2 等),准备好执行。如果它返回某种我们可以删除重复项的ArrayList 会更容易。我将建议将这些变量添加到JSR223(groovy) sampler/post processor 中的列表中,然后将它们转换回通常的 jmeter 变量以在通常的 jmeter 脚本流中使用。

    片段:

    我根据您的描述创建了一个示例脚本,该脚本将返回多个带有一些重复的报价。以下是jmeter变量在后处理前的状态。

    offer_1=RUSSIA
    offer_1_g=1
    offer_1_g0=offer="RUSSIA"
    offer_1_g1=RUSSIA
    offer_2=UK
    offer_2_g=1
    offer_2_g0=offer="UK"
    offer_2_g1=UK
    offer_3=ICELAND
    offer_3_g=1
    offer_3_g0=offer="ICELAND"
    offer_3_g1=ICELAND
    offer_4=USA
    offer_4_g=1
    offer_4_g0=offer="USA"
    offer_4_g1=USA
    offer_5=UK
    offer_5_g=1
    offer_5_g0=offer="UK"
    offer_5_g1=UK
    offer_6=USA
    offer_6_g=1
    offer_6_g0=offer="USA"
    offer_6_g1=USA
    offer_7=USA
    offer_7_g=1
    offer_7_g0=offer="USA"
    offer_7_g1=USA
    offer_matchNr=7
    

    正如您在上面看到的,变量中有重复项。将以下 Groovy 代码放入 JSR223 后处理器中,并选择 groovy 作为语言。

    // Count of offers extracted by Regular Expression Extractor
    def count = Integer.parseInt(vars.get("offer_matchNr"))
    // An empty list which will store the offers
    def offer_list = []
    
    for (int i = 1; i <= count; i++){
        def offer = vars.get("offer_" + i)
        offer_list.add(offer)
    }
    
    // Removes the duplicates in the list
    offer_list.unique()
    
    // Following one liner adds new variables but with only unique offers in similar format as jmeter variable.
    offer_list.eachWithIndex{ it, index -> vars.put("unique_offer_${index+1}", "${it}")}
    

    后处理后:

    unique_offer_1=RUSSIA
    unique_offer_2=UK
    unique_offer_3=ICELAND
    unique_offer_4=USA
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-15
      • 1970-01-01
      • 2023-03-18
      相关资源
      最近更新 更多