【问题标题】:How to evaluate parameter variable stored in a file in jMeter?如何评估存储在 jMeter 文件中的参数变量?
【发布时间】:2014-05-15 20:16:58
【问题描述】:

说,我有一个 jMeter 变量 var 等于 123。
我还有一个存储在 sql 文件中的查询:

SELECT * FROM Table WHERE ID = ${var}

我只需要从文件中读取该查询并将${var} 评估为实际值,然后在 JDBC Sampler 中执行它。所以我需要将这两部分组合成

SELECT * FROM Table WHERE ID = 123

并将查询传递给 JDBC 采样器。

虽然,jMeter 不会评估存储在该 sql 文件中的 ${var} 参数,我可以传递给 JDBC 采样器的只是(很明显):

SELECT * FROM Table WHERE ID = ${var}.

有谁知道如何让 jMeter 将存储的变量评估为实际值?

【问题讨论】:

    标签: sql file variables jmeter


    【解决方案1】:

    我也有类似的要求。

    您需要为 JDBC 采样器使用 Beanshell 预处理器。复制以下脚本并将其放入 .bsh 文件并调用它。我假设您将查询存储在“SQLQuery”变量中。

    我测试了下面的脚本,它可以工作。

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    String regex = "\\$\\{([^}]+)\\}";
    SQLQuery = vars.get("SQLQuery");
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(SQLQuery);
    while(matcher.find())
    {
        String token = matcher.group();   //${var}
        String tokenKey = matcher.group(1);  // var
        SQLQuery = SQLQuery.replaceFirst(Pattern.quote(token), Matcher.quoteReplacement(vars.get(tokenKey)));
    }
    vars.put("SQLQuery", SQLQuery);
    

    【讨论】:

    • 我采用了与您的方法类似的方法。 BeanShell 绝对有帮助:)
    【解决方案2】:

    您需要使用“Prepared Select Statement”作为查询类型。 Prepared Statements

    然后将您的 ${var} 替换为 ?

    SELECT * FROM Table WHERE ID = ?
    

    并在底部添加2个参数。

    Parameter values: ${var}
    Parameter types:  INT
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-29
      • 2011-05-17
      • 1970-01-01
      • 2022-11-21
      • 1970-01-01
      • 1970-01-01
      • 2019-08-28
      • 1970-01-01
      相关资源
      最近更新 更多