Jmeter-如何处理RegExpression中从同一响应捕获的重复值

Jmeter-如何处理RegExpression中从同一响应捕获的重复值,jmeter,jmeter-plugins,jmeter-3.2,jmeter-4.0,Jmeter,Jmeter Plugins,Jmeter 3.2,Jmeter 4.0,如何确保/处理在使用正则表达式时不会捕获重复值 在我的场景中,我需要从我的响应中捕获多个报价。但是不能在交易中一次又一次地使用相同的优惠有多种方法可以做到这一点。如果使用默认的正则表达式提取器,问题在于它会创建变量(例如:offer_1、offer_2等),以便执行。如果它返回某种类型的ArrayList,在那里我们可以删除重复项,那就容易多了。我要建议的是将这些变量添加到一个列表中,然后将它们转换回普通的jmeter变量,以便在普通的jmeter脚本流中使用 片段: 我根据您的描述创建了一个示

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


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

有多种方法可以做到这一点。如果使用默认的
正则表达式提取器
,问题在于它会创建变量(例如:offer_1、offer_2等),以便执行。如果它返回某种类型的
ArrayList
,在那里我们可以删除重复项,那就容易多了。我要建议的是将这些变量添加到一个列表中,然后将它们转换回普通的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}")}

有多种方法可以做到这一点。如果使用默认的
正则表达式提取器
,问题在于它会创建变量(例如:offer_1、offer_2等),以便执行。如果它返回某种类型的
ArrayList
,在那里我们可以删除重复项,那就容易多了。我要建议的是将这些变量添加到一个列表中,然后将它们转换回普通的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}")}