我试图在响应断言中获得响应代码200的no.of匹配

时间:2016-12-12 05:54:13

标签: java jmeter beanshell

我为此编写的代码如下:

try {
    byte []
    samplerdata = ctx.getPreviousResult().getResponseCode();
    String
    samplerdatastring = new String(samplerdata, "UFT-8");
    vars.put("samplerdata", samplerdatastring);
    vars.get(samplerdata);
    int
    matches = StringUtils.countMatches(samplerdata, "200");
    vars.put("matchescount", String.valueOf(matches));
    vars.get(matchescount);
} catch (Throwable
ex
)
{
    log.error("Error in Beanshell", ex);
    throw ex;
} 

导致如下错误:

  

jmeter.util.BeanShellInterpreter:调用bsh方法时出错:eval源文件:内联评估:``try {byte [] samplerdata = ctx.getPreviousResult()。getResponseCode(); Stri。 。 。 '' :TargetError

任何人都可以帮我解决这个错误。

1 个答案:

答案 0 :(得分:0)

尝试如下:

import org.apache.commons.lang.StringUtils;

try {
    String
    samplerdata = ctx.getPreviousResult().getResponseCode();
    vars.put("samplerdata", samplerdata);
    vars.get("samplerdata");
    int
    matches = StringUtils.countMatches(samplerdata, "200");
    vars.put("matchescount", String.valueOf(matches));
    log.info(vars.get("matchescount"));
} catch (Throwable
ex
)
{
    log.error("Error in Beanshell", ex);
    throw ex;
} 

解决了代码中的问题:

  1. getResponseCode返回String,因此请将其存储在String中,但不能存储在byte[]
  2. 删除了用于从byte[]转换为String
  3. 的其他代码
  4. StringUtils
  5. 添加了导入声明
  6. 在检索matchescount时,我们应该在vars.get中将其保留为双引号。同样适用于samplerdata
  7. 您可以使用prev返回SampleResult对象而不是ctx。

    现有:

    String
        samplerdata = ctx.getPreviousResult().getResponseCode();
    

    您也可以尝试:

    String
        samplerdata = prev.getResponseCode();