Jmeter - 重置从表达式提取器生成的变量

Jmeter - reset variables generated from Expression extractor

我正在通过使用 JSON 和正则表达式提取器在脚本中生成一些变量。

我需要为我处理的每条测试记录重置这些,以确保每条记录都使用正确的提取值。

问题(如果是问题)是生成的值由许多数组元素或组组成。

示例:

Regular expression extractor generating Reference Name: identifier
This generates:

 - Identifier
 - Identifier_g
 - Identifier_g0
 - Identifier_g1

我可以在 beanshell 中的适当位置使用 vars.put("Identifier",null); 成功重置标识符,但这不会重置其他项目。

我进行了多次这样的提取,它们产生的结果数量可能会有所不同,因此上面的 'g' 值可能会改变。

关于如何重置这些(或者即使我需要)有什么建议吗?

只要提取器再次运行,它就会自动清除旧值。

如果您在不同的提取器中使用相同的变量名称,这只会是一个问题。

如果你可以重置一个变量 - 你可以重置所有变量,我唯一推荐的是使用 Groovy 而不是 Beanshell。原因在:

参考文献:

最后是相关的Groovy代码,用于重置名称以Identifier

开头的所有变量
vars.getIterator().each {
    def name = it.getKey()
    if (name.startsWith('Identifier')) {
        vars.put(name, null)
    }
}

当你使用Regular expression并且你将Template定义为$例如它将取only Identifier_g1值,这意味着匹配组1 的正则表达式,其他值未使用,因此在正常流程中您不需要关心它们。

组数不变,基本上您在 Regular expression (\w+)=(\d+) 中创建的圆括号数将创建 2 个组,因此您必须删除直到 Identifier_g2 .

如果需要,您可以添加 JSR 223 元素以删除特定值。

您可以在 JSR223 SamplerJSR223 PreProcessorJSR223 PostProcessor 之间进行选择,具体取决于您希望执行的时间。请注意,Sampler 将包含在报告中,如果脚本失败,它将被标记为失败。

您的案例代码:

vars.remove("Identifier");
vars.remove("Identifier_g");
vars.remove("Identifier_g0");
vars.remove("Identifier_g1");