zoukankan      html  css  js  c++  java
  • Jmeter中控制某一段脚本失败后重复执行,并在每个HTTP Request名字中加上循环次数

    ==================================================

    1.While Controller之前有一个BeanShell Sampler,用于Init Note Parameters

    vars.put("INCREMENT", "0");
    vars.putObject("ANYSAMPLEFAIL", false);
    vars.putObject("ISCONTINUE", true);
    vars.putObject("MAXLOOP", 5);

    ==================================================

    2.While Controller内则是这样的

    ==================================================

    2.1首先是需要在失败之后重复执行的一些步骤,每个HTTP request名称后面都可以加上一个“_${INCREMENT}”,这样就可以标识出循环到了第几次;

    ==================================================

    2.2接着是一个BeanShell Assertion,用于判断取样器的结果(Judge Sample Result)

    import org.apache.jmeter.util.JMeterUtils;
    import org.apache.jmeter.samplers.SampleResult;
    import org.apache.jmeter.assertions.AssertionResult;  
     
    SampleResult prev_result=ctx.getPreviousResult();  
     
    var increment = vars.get("INCREMENT");
    Integer maxloop = (Integer)vars.getObject("MAXLOOP");
     
    if (prev_result  !=  null  && !prev_result.isSuccessful())  
    {
                  vars.putObject("ANYSAMPLEFAIL", true);
                  if (Integer.parseInt(increment)< (maxloop.intValue() - 1))
                 {   
                      prev_result.setSuccessful(true);   
                 }       
    }

    ==================================================

    2.3最后是一个BeanShell Sampler用于控制循环次数(Control Loop Count)

    import org.apache.jmeter.util.JMeterUtils;

    var increment = vars.get("INCREMENT");
    Integer tempIncrement=Integer.parseInt(increment);
    tempIncrement++;
    Boolean requestResult = (Boolean)vars.getObject("ANYSAMPLEFAIL");
    Integer maxloop = (Integer)vars.getObject("MAXLOOP");
    boolean iscontinue = (tempIncrement < maxloop) && requestResult.booleanValue() ;
     
    vars.putObject("ISCONTINUE", iscontinue);
    vars.putObject("ANYSAMPLEFAIL", false);
    vars.put("INCREMENT",tempIncrement.toString());

    ==================================================

    备注:

         只有以vars.put("INCREMENT", "0")的方式定义变量,才可以在HTTP request中通过${INCREMENT}直接进行引用,以vars.putObject("INCREMENT", "0")的方式定义变量就不可以。

          而且,通过vars.get("INCREMENT")获取变量的值时,必须这样:var increment = vars.get("INCREMENT"),即左边的变量必须定义为var,否则就总是报错。

  • 相关阅读:
    机器学习算法最深刻的讲解,包含海量数据处理算法
    从海量数据中寻找出topK的最优算法代码
    转载:基于 Hive 的文件格式:RCFile 简介及其应用---推酷
    原创:自定义三叉树(二)--基于搜索推荐系统根据用户搜索频率(热搜)排序
    原创:协同过滤之ALS
    AT2705 Yes or No(组合数学)
    LUOGU P4609 [FJOI2016]建筑师(第一类斯特林数)
    BZOJ 4710: [Jsoi2011]分特产(容斥)
    51nod 1518 稳定多米诺覆盖(容斥+二项式反演+状压dp)
    BZOJ 3944: Sum(杜教筛)
  • 原文地址:https://www.cnblogs.com/MasterMonkInTemple/p/3503590.html
Copyright © 2011-2022 走看看